I think the problem is in:

A. The READ works OK because you get Temp.LowByte/HighByte from EEPROM and put the Temp word into your array.

B. The WRITE fails because you just write Temp.LowByte/Highbyte into EEPROM and the 'array read' is after this - put the 'array read' before the EEPROM write and all will be OK - I hope?

Regards Bill Legge