One way that works for me is to initialize all registers after reset and run with WDT on, and deliberately allow the WDT to trip every time you can afford it (i.e. about every 2 seconds in the idle loop). This means that you have clrwdt instructions only in a certain shared main program branch but none in the main loop, and some in longer duration subroutines. So far this scheme has worked well with inconsistent power supplies and other problematic projects. But I am not a large volume manuf.. Peter -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu