Небольшой слом шаблона с индексом цикла

Посмотрите на этот код:

Как это ни странно, но он иногда выдавал ошибку:

Я этот код и так вертел и эдак. А причину ошибки найти не мог. Ведь вроде бы все логично, Последний не может превышать Всего. Откуда же нарушение индекса?

И все же я нашел причину ошибки, но это сломало мой шаблон.



Дело в том, что индекс нарушался не сверху, а снизу. Если Последний равен нулю, то мы получали отрицательный индекс в выражении Последний-1.

Поэтому я добавил в код защиту от нуля:

Вот такая элегантная ошибка.