This brings up an issue that I have long harped on.

Unless you are building a huge quantity of something, where the cost of the coding can be amortized across a large number of units, ALWAYS

Use an 18F part
Use a part that has at least twice the codespace you need.

And, if you want to know if you have exceeded any particular memory size, use

Code:
ASM
     ORG 0x1fcee        ; put your limit here
     nop
ENDASM
at the end of your program. The compiler will give you an error if you exceed the size given in the ORG statement.