Hi,
Is the PIC actually running at the DEFINEd OSC frequency?
If you tell the compiler that it's supposed to be running at 20MHz but then only run it at 12MHz (or whatever) then all timings will be off by the ratio between actual and DEFINEd frequency.

/Henrik.