Well, the positions use zero-based numbering and the length uses one-based numbering...
Length must be one-based, because it's rather important to be able to interpret a length of zero...
While the indices could easily be one-based (LUA), it's quite logical that they would be zero based, because the index actually marks the offset in memory. I.E. for an array of type int, the first entry is equal to the address of the array (therefore length zero away from it). The second entry is the length of 1 int further down the chain, etc. This offset is what you define when you call an array with index.
You get used to it pretty fast...
