This may help with your data storage.
The below code is for a counter, sort of like an odometer. It saves the value to EEPROM at each hit of a switch. When the device is turned on the EEPROM is read and the values placed back into a variable for continued use. Also has the ability to reset the stored values back to zero at start up.

Pick through it and see if it helps.
Code:
'*  Notes   :16F877A                                
'*   SAVE TO EEPROM                                         
'****************************************************************
 '_config _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF &_BODEN_OFF

DEFINE OSC 20

DEFINE LCD_DREG     PORTB
define LCD_DBIT     4
DEFINE LCD_RSREG    PORTB
DEFINE LCD_RSBIT    1
DEFINE LCD_EREG     PORTB
DEFINE LCD_EBIT     0
DEFINE LCD_BITS     4
DEFINE LCD_LINES    2
DEFINE LCD_COMMANDUS    2000
DEFINE LCD_DATAUS   50

TRISA = %00000000
ADCON1=14

Asm
    ERRORLEVEL -306
Endasm
include "modedefs.bas"


'TOTAL VARS
O	VAR	BYTE	'ONES
T	VAR	BYTE	'TENS
H	VAR	BYTE	'HUNDREDS
TH	VAR	BYTE	'THOUSANDS
TTH	VAR	BYTE	'TEN THOUSANDS
HTH	VAR	BYTE	'HUNDRED THOUSANDS
M	VAR	BYTE	'MILLIONS

OD	VAR	BYTE	'ONES
TD	VAR	BYTE	'TENS
HD	VAR	BYTE	'HUNDREDS
THD	VAR	BYTE	'THOUSANDS
TTHD	VAR	BYTE	'TEN THOUSANDS
HTHD	VAR	BYTE	'HUNDRED THOUSANDS
MD	VAR	BYTE	'MILLIONS

'TOTAL LOGS
O_LOG	VAR	BYTE	'ONES
T_LOG	VAR	BYTE	'TENS
H_LOG	VAR	BYTE	'HUNDREDS
TH_LOG	VAR	BYTE	'THOUSANDS
TTH_LOG	VAR	BYTE	'TEN THOUSANDS
HTH_LOG	VAR	BYTE	'HUNDRED THOUSANDS
M_LOG	VAR	BYTE	'MILLIONS

'READ LOGS
READ O_LOG, OD
READ T_LOG, TD
READ H_LOG, HD
READ TH_LOG, THD
READ TTH_LOG, TTHD
READ HTH_LOG, HTHD
READ M_LOG, MD


NUM	VAR	BYTE
NUM = 0
pause 1000

CHECK:
IF PORTE.2 = 1 THEN GOSUB CL_LOG 'FOR RESET AT START UP
IF PORTE.2 = 0 THEN START
GOTO CHECK

START:
HIGH PORTD.2      'LED
PAUSE 5
IF PORTD.3 = 1 THEN GOSUB C_P_T  'SWITCH FOR PARTS
LOW PORTD.2
PAUSE 5
GOTO START

C_P_T:
LCDOUT $FE,1,"C TEST"
LCDOUT $FE,$C0,DEC MD,DEC HTHD,DEC TTHD,DEC THD,DEC HD,DEC TD,DEC OD
O = O + 1
IF O = 10 THEN
O = 1
T = T + 1
	IF T = 10 THEN
	T = 0
	H = H + 1
		IF H = 10 THEN
		H = 0
		TH = TH + 1
			IF TH = 10 THEN
			TH = 0
			TTH = TTH + 1
				IF TTH = 10 THEN
				TTH = 0
				HTH = HTH +1
					IF HTH = 10 THEN
					HTH = 0
					M = M +1
					ENDIF
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF

WRITE O_LOG, O
WRITE T_LOG, T
WRITE H_LOG, H
WRITE TH_LOG, TH
WRITE TTH_LOG, TTH
WRITE HTH_LOG, HTH
WRITE M_LOG, M

READ O_LOG, OD
READ T_LOG, TD
READ H_LOG, HD
READ TH_LOG, THD
READ TTH_LOG, TTHD
READ HTH_LOG, HTHD
READ M_LOG, MD

RETURN

CL_LOG:

HIGH PORTD.2
PAUSE 100
LOW PORTD.2
PAUSE 100

O = $0
T = $0
H = $0
TH = $0
TTH = $0
HTH = $0
M = $0

WRITE O_LOG, O
READ O_LOG, OD
WRITE T_LOG, T
READ T_LOG, TD
WRITE H_LOG, H
READ H_LOG, HD
WRITE TH_LOG, TH
READ TH_LOG, THD
WRITE TTH_LOG, TTH
READ TTH_LOG, TTHD
WRITE HTH_LOG, HTH
READ HTH_LOG, HTHD
WRITE M_LOG, M
READ M_LOG, MD
RETURN

END