I never found a PIC with a accurate internal clock. It shift at least with temperature.

You can still skip the interrupt and use MPASM Stopwatch (or else) to trim your program timing using a simple loop.