Currently, you show the 2-byte magic number at header offset 0x0000 (zero-based, obviously), but the version byte at offset 0x0003, and the flags bitfield at offset 0x0004. What is at offset 0x0002 is not stated.
Reviewing the code seems to indicate that everything other than the magic number should be reduced by one. Perhaps you started using 1-based counting, changed to 0-based to match the code, but didn't finish your updates?
Currently, you show the 2-byte magic number at header offset 0x0000 (zero-based, obviously), but the version byte at offset 0x0003, and the flags bitfield at offset 0x0004. What is at offset 0x0002 is not stated. Reviewing the code seems to indicate that everything other than the magic number should be reduced by one. Perhaps you started using 1-based counting, changed to 0-based to match the code, but didn't finish your updates?