It's difficult to tell what is actually happening, and what should be happening..
It may just be a matter of stepping through flow in debug mode to see what it decides to do, as you might just have some little glitch in the system that sends it back to the start or something, or a governing fsm that you forget is doing something to the piece. Perhaps find the state that would cause that behavior, add a breakpoint and start testing.