RE: Sporadic lost data in EEPROM
Some PICs had a problem where (presumably at power-down) the value in the eeprom location pointed-to by EEADR was corrupted.
The workaround was:
(1) Allocate a specific "scratch" location in eeprom - I use location 0.
(2) After eeprom-writing has completed, set EEADR to point to this "scratch" location.
(3) Remember also to point EEADR away after a read from eeprom.
Are you doing anything like this?
Could you adapt your code to do it?
Hope this helps,