Bruce - Good catch on the Data statement (DUH!)! However, if I run my original code as in my first post (with the change in the data statement), I still get the same results: perfect servo movement when first booted up, but when I move the servo to the center position, switch on the SetLimitSw, press the Min button and then switch off the SetLimitSw, the servo no longer responds to the pot - as though both the min and max buttons were pressed at the same position.

I am beginning to think I have some underlying hardware issue (as Alain suggests). I will do some metering to see if I see anything fishy. If I don't, I'm going to rebuild the board with new components. If it still does it after all that, I'll shoot myself! (just kidding!).

Thanks guys - let me know if you think of anything else!