That is right sorry, I have my interpreted and compiled BASICs mixed up.

It's probably not bad practice anyway, so that your fast code is not kicked
out of the first page when you add picbasic's macro type commands such
as serin/out, DTMF, SOUND, pauseus, etc.
It also matters with C later on, to to avoid forward declarations.

It makes me wonder now, if every goto command also has the PCLATH
command with it, or if picbasic waits till the program extends past the 2K page (probably does).

You also turned off the watchdog, but didn't tell PBP not to insert clrwdt commands.
You would only need a single asm "@ clrwdt" inside the whole Main loop,
and calculate that into your subtract from the delay time,
but they are likely in the PAUSE commands, and factored into timing I think.