Thanks to Roy Walker and Chuck McManis for the help with my 16 bit decrement problem. Roy The instruction btfss _v ;#define ALUSTA,3 _v I am not familiar with this one. From the way you have written your code I guess it is an overflow flag. I thought the decf instruction only affected the zero flag? Chuck I do need the full 16 bits (shame as your first solution was very neat) so I ended up using a variation of your second solution. The counter is decremented once each interrupt and should stop once it reaches zero. ( The routine will be called continuously by the interrupt so a check for zero is mandatory) Here's my solution:- intserv movf lobyte,w ;get the low byte btfss status,z ;check it for zero goto declo ;its zero so decrement it iorwf hibyte,w ;or in the high byte btfsc status,z ;test for zero goto finish ;both hi and lo zero so no action decf hibyte declo decf lobyte finish retfie Whoops, the comment on line 3 should be 'its not zero etc' This seems to work but if anyone has a neater sotution ??? :-) Thanks again P.S. sorry if you got my last post twice Nick