I was looking through the example code for the EEPROM library, and noticed this mistake:
/***
Need to divide by 4 because analog inputs range from
0 to 1023 and each byte of the EEPROM can only hold a
value from 0 to 255.
***/
int val = analogRead(0) / 4;
Whoever wrote the above doesn't seem to realize that dividing by 4 is NOT the right approach to storing a number than can range from 0 to 1023. Basically what we have here is a number that should take no more than 10 bits to store (2 ^ 10 = 1024). So, dividing by 4 isn't really what we want. Instead, I would suggest using the highByte() / lowByte() functions, as that will split the word into two separate bytes. By definition a word (2 bytes) can store a unsigned number in the range 0 to 65535 (one less than 2 ^ 16).
I'm just sayin'...
Dan