Reading and writing across the block boundary was not stepping the
eeprom position after the partial i/o operation at the end of the
first block. This meant that the operation would re-use the end of the
previous block, either re-reading or re-writing it.