OK.
Although, I still don't understand the behavior of function calls, i solved the problem by not sharing the state between the condition in the function declaration and the action. Instead, I pass the current state as parameter to the function and test the parameter for state
F1, Arg(0)=1 => Action1, Action 2, S=2
F1, Arg(0)=2 => Action, 3, Action 4, S=3
Like this setting, say, S=2 in the first line, doesn't' trigger the second function