Hi Alberto,
The token received at the ForkNode is held until at least one of the outgoing conditions is satisfied.
In general, the ControlFlow is a specialization of an ActivityEdge and each ActivityEdge can refer to a 'Guard' (~= precondition). This guard is an boolean expression which is evaluated when a token is offered to the edge. The offer (and then the token) will be passed along the edge only if the evaluation result is true. (Without a forwarded token, the ActivityNode at the other end of the edge will not be triggered at all.)
So when a fork receives a token, the fork also offers it on all outgoing edges and then holds it until at least one of these offers is accepted. When this happens, the fork will copy the token onto all edges accepting the offer, but all other edges (rejected by their guards) shall not receive a copy of the token.
hope it helps,
Istvan