Note that in the above example, anything within the condition is executed approximately every 100 milliseconds ( assuming the command being executed doesn't take longer to do so than that), for as long as the axis value is below 5% (approximately, given that ADC resolution can bias that value).
If the intent is to execute a command once, every time the axis value changes from being higher than 5%, to being lower than 5% (or, from being unavailable to available), a modification like this could work:
Start Indefinite Loop
Pause 0.1 seconds
Set integer [~axisValue] value to the converted value of {STATE_JOYSTICK1Z}
Begin Integer Compare : [~axisValue] Is Less Than 3277
Begin Integer Compare : [~axisValue] Equals -1
Loop Continue
End Condition
Begin Boolean Compare : [~triggered] Equals False
Set Boolean [~triggered] to True
// Example: DO SOMETHING HERE
Write [Green] 'Z axis of Joystick #1 is LESS than 5%' to log
Execute command, 'Example Command Name' (by name) (and wait until it completes)
End Condition
Else
Begin Boolean Compare : [~triggered] Equals True
Set Boolean [~triggered] to False
End Condition
End Condition
End Loop
I chose to move the check for -1 to within the loop as a separate condition; realistically it's not going to matter, but that way only one condition is evaluated while the value is higher than 3277 (which may well be negated by having more actions).
That's not something you'd notice in practice, performance/CPU usage-wise.