And why 19 bits to store the odometer value in the EEPROM? It's actually stored in 16 bytes (128 bits) but it uses a weird format (I think for redundancy in case a little bit of the EEPROM gets corrupted and to reduce the number of times each EEPROM location needs to be written (EEPROM cells wear out after a certain number of writes)).

The odometer is stored in 8 consecutive blocks of 2 bytes each. Each block represents an unsigned 16-bit word stored least significant byte first. Each block is initialized at the factory to FFFF (65535). After the car travels the first 2 km, the first block is decremented by 1. After the second 2km, the second block is decremented by 1. And so on, up to block 8. Then it goes back to block 1.

ffff ffff ffff ffff ffff ffff ffff ffff (0 km)

feff ffff ffff ffff ffff ffff ffff ffff (2 km)

feff feff ffff ffff ffff ffff ffff ffff (4 km)

feff feff feff ffff ffff ffff ffff ffff (6 km)

feff feff feff feff ffff ffff ffff ffff (8 km)

feff feff feff feff feff ffff ffff ffff (10 km)

feff feff feff feff feff feff ffff ffff (12 km)

feff feff feff feff feff feff feff ffff (14 km)

feff feff feff feff feff feff feff feff (16 km)

fdff feff feff feff feff feff feff feff (18 km)

fdff fdff feff feff feff feff feff feff (20 km)

etc.

So every 2km you drive, on average one of 16 locations in the EEPROM needs to written. This reduces the number of times any one location needs to be written and makes it obvious if any location gets accidentally corrupted.

And so even though there are 128 bits reserved for the odometer, each byte pair can store 2^16 (65536) values and only changes every 8 (2^3) times. 16 + 3 = 19.

And all of the above info only applies to the MKIV VDO clusters that I've studied. The Bosch and Marelli clusters are likely very different.