<!-- 2 L:vars to hold direction -->
<Update>
<!-- INI TO CURRENT POSITION -->
(G:Var1) 0 == if{
(L:switch pos, number) (>L:old switch pos, number)
1 (>G:Var1)
}
(L:switch pos, number) (L:old switch pos, number) != if{
(L:switch pos, number) (L:old switch pos, number) > if{
1 (>L:switch went up, bool) 0 (>L:switch went down, bool)
} els{
0 (>L:switch went up, bool) 1 (>L:switch went down, bool)
}
(L:switch pos, number) (>L:old switch pos, number)
}
</Update>
<!-- L:switch direction, number | 0 = invalid (never moved yet), 1 = went up, 2 went down -->
<Update>
<!-- INI TO CURRENT POSITION -->
(G:Var1) 0 == if{
(L:switch pos, number) (>L:old switch pos, number)
1 (>G:Var1)
}
(L:switch pos, number) (L:old switch pos, number) != if{
(L:switch pos, number) (L:old switch pos, number) > if{
1
} els{
2
}
(>L:switch direction, number)
(L:switch pos, number) (>L:old switch pos, number)
}
</Update>