Thanks Darrel,

But that's not my problem. I understand what the instructions do. I found the potential problem by examining the assembler code generated by MPASM win, v3.50. I actually found the answer when I spoke with Jeff Schmoyer. It's due to a compatibility issue between pbp and MPASM.

It seems that my version of pbp, 2.43, generated the asm instructions 'DE' per each byte requested by the DATA statement. The Microchip assembler, v3.50 and earlier, builds that instruction into WORDs, at least for the 18F family, thus tossing a byte of EEPROM each time. Jeff said they (Microchip) have never changed it, so he has a later version of pbp that solves the problem by using a different approach.

Thus, if anyone is using the EEPROM or DATA statements in a program targeted toward an 18Fxxx part, a compiler upgrade may be needed.