Вы совершенно правильно пишете. Функция исполняется каждый цикл, в течение исполнения состояния входов гарантировано не меняются. На следующий скан все повторяется.
Непонятно как из этого следует вывод что внутри функции нельзя несколько раз за один проход поменять состояние автомата описанного внутри функции?
Автомат это просто набор переходов между состояниями. Выход я записываю один раз (по-другому сделать и не получится) По сути это просто операции с локальными переменными.
Или проблема в том что используется цикл с нефиксированным количеством итераций? Ну так вроде никаких ограничений не наложено в документации.