Thanks for the reply. I've changed the variable's type from BYTE to WORD, but there must be something else wrong as well - my servo still goes to one extreme and sits. Even if I do away with the loop entirely and just send it one position to center it, I'm still getting this behavior. That suggests to me that it must be timing-related, but I've tried timing some LED pulses without doing a DEFINE OSC and it confirms the 8MHz I see in the datasheet.

Maybe if I buy the PIC some chocolates?