Missing Encoder Steps

From the code in @cattledog's post #5 it appears that the encoder update is polled rather than interrupt driven. Have you ruled out using interrupts?