Iterating backwards IS more natural, thus why starting at one STILL makes no sense since
while (--i) {}
Is closer to the proper assembly language construct.
It would also be more code under the hood when working with things like arrays. Take and array of word where under the hood it's memory offset + index * record size. All you've done is turn it into memory offset + (index - 1) * record size. How is that an improvement? Lands sake are you even familiar with the zero flag register? How on x86/x64 you load your count into CX and the LOOP command decrements CX juming if ZF == 0?
You also don't start counting from one when you have none. None is before one.
Starting from one is as ignorant and nonsensical as "eye cans haz ten fingars" is as the basis for a measurement system. When you can't even divide by the second and third primes as a natural number, your measurement system is trash.
There's a reason nobody worth mention is trying to make metric clocks or metric navigation. Hell, even the Russkies have switched back to feet for aviation! It's really sad the ancient Sumerians had better numbering systems than we use today.
Remember the lesson of Clarke's 2001. 1x4x9... 36" to the foot, the yard is superior to the meter, even the aliens think so. (that was a joke)
And really just like the illogical ten fingers so ten digits garbage, starting at one is arbitrary and not how the math actually works on computers.
Arbitrary "wah wah, I can't do real math" is no reason to add overhead and unnatural structures, even if it contradicts your grade school level arithmetic.
We spend away too much time catering to people who should probably just back away from the keyboard and go take up something a bit less detail oriented like macramé.