Preserve battery with Sleep ?

I know this is an old thread but I can tell you where your extra 4 mA is coming from because I've spent the last few hours trying to figure out the exact same problem. NewSoftSerial adds 4mA of extra current to all of your sleep mode settings. I was following some of Nick's code to use as a baseline. Try the simple sketch below with and without creating an instance of NSS and you'll see a 4mA difference. The numbers on the left are without NSS and on the right with NSS. Now my question is can you delete an instance of NewSoftSerial after you've created one?

#include <avr/sleep.h>
#include <NewSoftSerial.h>

//NewSoftSerial ThisIsKillingME(8,9);


void setup () 
{
  set_sleep_mode (SLEEP_MODE_PWR_DOWN);  //480uA  4.35mA
//  set_sleep_mode (SLEEP_MODE_STANDBY);  //636uA  4.5mA
//  set_sleep_mode (SLEEP_MODE_EXT_STANDBY);  //775uA  4.65mA
//  set_sleep_mode (SLEEP_MODE_PWR_SAVE);  //775uA  4.648mA
//  set_sleep_mode (SLEEP_MODE_ADC);  //967uA  4.84mA
//  set_sleep_mode (SLEEP_MODE_IDLE);  //1.16mA  5.03mA
  sleep_enable();
  // disable ADC
  ADCSRA = 0;  
  // turn off various modules
  PRR = 0xFF; 
  // turn off brown-out enable in software
  MCUCR = _BV (BODS) | _BV (BODSE);  // turn on brown-out enable select
  MCUCR = _BV (BODS);        // this must be done within 4 clock cycles of above
  sleep_cpu ();              // sleep within 3 clock cycles of above
}  // end of setup

void loop () { }