Okay, I changed the int's to bytes
byte lowEEPROM = 0;
byte highEEPROM = 0;
unsigned int EEPROMend = 0;
and still this results
EEPROM 0, 1 = FFFF
EEPROMend = 7F80
Writing array address 2 255
Writing array address 3 255
Writing array address 4 255
Writing array address 5 255
Writing array address 6 255
so that doesn't seem to be it.