@Profuter Не понимаю почему раздули такую проблему, основная задача, так это то, что ничего не сбивается. Вся то проблема решается вводом дополнительной переменной для внешнего цикла, сразу после вхождения в него, например, COUNTER и присваивается ей значение CYCLE_INDEX. Тоже самое касается и FOREACH_DATA - вводится дополнительная переменная и присваивается ей значение. И используется дальше она.
Эти счетчики работали так спокон веков и я сомниваюсь, что, кто-то будет что-то переделывать, так как кому-то просто лень ввести дополнительную переменную.