We have had the same issue in the past with getting to position on RobotC graphical. Basically, when you have a test condition like check for zero velocity, you should place a command just before to ensure it has a non-zero velocity. The reason being, these are time based when they drop out of the initial move command and if anything makes you have a longer time, it will fall right through your zero velocity test since it never got moving.
We do this type of thing for any sensor based command that uses a time delay in the low level code as it’s means for thinking it actually did something.
Once you do this, they work fine.