In my opinion, Clemens is right when says that MIDI data numbers are always zero-based. I don't agree with him when says that the specification is wrong.
Let me explain: you know about the MIDI channel numbers. There are 16 MIDI channels, numbered from 1 to 16. All musical instruments display the same numbers for the MIDI channels, like the instruments' documentation, and like the specification does. But the channel number is encoded in the four less significative bits of the status byte (of the channel message events) as a number from 0 to 15.
All MIDI data numbers are zero-based. But as a general rule, when the data number represents an enumeration it is documented as one-based (like channel numbers, program numbers, or bank numbers). When the data numbers represent magnitudes, they are represented zero-based, like MIDI velocity (0-127).
I want to add that I am happy with this tradition, because a long time ago musicians were considered artists, not engineers