Так извиняйте, прежде чем писать что-то по самому циклу (инвариант), надо же спецификацию сформулировать (что вычисляем). Что и попытался сделать, для себя.

Вариант-то рабочий получился быстро (там задачка была срочная), кстати, и надёжно. Правда, когда через два часа подумал, как надо проще, заменять в работающей службе не стал