Scott - since I don't need a particular timeout for this application, why wouldn't INCFSZ work. That is: clrf c_low clrf c_mid clrf c_high s1: BTFSC IOPORT,IOBIT goto went_high INCFSZ c_low,F goto s1 clrwdt ; BTFSC IOPORT,IOBIT goto went_high INCFSZ c_mid,F goto s1 nop BTFSC IOPORT,IOBIT goto went_high INCFSZ c_high,F goto s1 time_out: Note also that your routine lets me take care of the watchdog with no added penalty! Now, since incrementing each added byte of counter causes the previous bytes to miss a count (the mod 257 that you alluded to in your message), correcting to mod 256 should be easy. The modulus changes as you extend the counter: in the 3 byte counter above, the lowest byte misses the counts accumulated by both of the upper bytes; the mid byte misses the counts accumulated by the high byte. A first pass of the correction routine follows - but its pretty stinky and I'm sure that I am missing something obvious. went_hi movfw c_mid ;add mid byte to lower; propogate carries addwf c_low,F movlw 1 skpnc addwf c_mid,F skpnc addwf c_high,F movfw c_high ;add high byte to lowest; propogate carries addwf c_low,F movlw 1 skpnc addwf c_mid,F skpnc addwf c_high,F movfw c_high ;add high byte to mid; propogate carries addwf c_low,F movlw 1 skpnc addwf c_mid,F skpnc addwf c_high,F Back to you, Scott (and the rest of the PicListers). ideas, improvements? dwayne