There's a popular paper on the technique by Godfried Toussaint that explores it in depth: http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf
I personally think that counting from zero is a really harmful habit. I understand how it originated and of course switching to counting from 1 would involve all sorts of kludges and result in all sorts of bugs. But it strikes me as a classic case of abstraction gone wrong, as 'the nth step' is going to mean entirely different things in the problem and the software domain.