I have reversed Yes/No to match InPunch meaning (if "Time in punch" has failed, we are NOT in Punch).
But important addition is in Feedback, "Set monitored InPunch to engine".
Any changes done during monitor evaluation (so in Logic before the Monitor Action) are "temporary". Inside Monitor (Feedback) state changes are still "temporary", till explicitly asked to be saved (into engine). Note that "Set engine state" flag meaning during Monitor evaluation is different, marked by that flag Action will be ignored during evaluation. So that is not the right way to do this (I know, from common sense it should be... but sorry, there was good reason to introduce such ugly logic...).
AZ Controller has 3(!) different execution contexts and many Actions do different things in different contexts:
* "direct" execution, when Logic control is executed as the reaction on incoming MIDI (OSC, game controller), including loop-back .
* "monitor evaluation", actions in the Logic control before Monitor in question are executed every time Monitor should be evaluated
* "monitor" execution, when the Monitor is triggered, corresponding Feedback Actions are executed.
As an example for the difference, "Set state" Action:
* change the state permanently in "direct" execution
* change the state temporary in "monitor evaluation" execution when "Set engine state" is unset
* ignored in "monitor evaluation" when "Set engine state" is set
* change the state temporary in "monitor" execution when "Set engine state" is unset
* change the state permanently in "monitor" execution when "Set engine state" is set (from what I remember, it also set temporary state).
"monitor" execution still "see" temporary changes done during evaluation.