What if you assign the Read/Write addresses before hand?
Code:
Value Var 	BYTE
Addr	Var	byte
Loc 	Var	Byte

'---------------------------------------------------------
Pause 500
	DEBUG "Start......",13,10
Value=0
Loc=0
WR_Add CON $36
RD_Add CON $37

Main:
High Led : Pause 500: Low Led : PAUSE 500
	'Addr=$36
	I2CWRITE SDA,SCL,WR_Add,[LOC],Fail1
	'Addr=$37 : pause 10 ' Sometimes it is failing, leaving pause 10 makes it better.
	I2CREAD SDA,SCL,RD_Add,[VALUE] ,Fail2
	PAUSE 25
	DEBUG  Value,13,10
	PAUSE 250
	DEBUG "Done....",13,10
WHILE 1 : WEND
Goto Main

Fail1:
while 1:	toggle portc.2 : pause 50 : wend 
goto main

Fail2:
WHILE 1
	High Portc.2 : Pause 250 : Low PortC.2 : Pause 250
WEND
Question: Where is the "1" monitored at in these statements? Never seen it done this way before.
Code:
WHILE 1: WEND