I assume it's like the conditional logic in the code going all haywire, [...]
It's probably more a question of variable type, with a DWord (32 bits integer) in place of a Word (16bits integer) by example. (Too) often values are validated when wrote in the save (here it's a string, here a Byte, etc.), but not when read from it. This simply because the guy who wrote the code expect whatever is in the save file to be correct, since it's expected to have been validated.
Therefore the save file can be read, but like the value have the incorrect time, it can't be wrote.