I use an ISY-994i controller for my home automation. It is very easily user programmable, and powerful.
However, the "Programs" for the ISY-994i have a particular weirdness that I've struggled with for a decade and now, thanks to discovering this informative post, I have a handle on.
It's not obvious what the "trigger" conditions for running a program are sometimes, and they have to be understood separately from the "condition" which determines whether the THEN or ELSE clause runs.
If a condition is something being switched, the program is only triggered when it is switched THAT way. So if that is the only condition, the ELSE clause is never run. A way around this is to add an "is not" clause because they must be evaluated for any change.
OTOH, if a clause is about the status of something being on or off, the program is run for ANY status change, and then the THEN or ELSE may apply.
A program is run if any of the conditions is triggered, so then the THEN or ELSE may apply.