write preset_counter, encoder1_counter, encoder2_counter, encoder3_counter
Each time you write you're writing three bytes of data, but you're only incrementing the address (preset_counter) by one.
The next time you write you'll be overwriting part of the previously saved data.

When you go to write/read, multiply preset_counter by 4 and use that as the address so the three bytes are preserved.
Make sure preset_counter is never more than 255/4 or the address will wrap since it's a byte value.