The value motion driver uses a queue based processing system, meaning that it places commands on a queue, and the processor handles them in order, and places the results on another queue. One problem with this method is that it is easy to overflow the queue, especially as PCs get faster and faster. I would reccomend lowering the number of times you check the status of the axes. This should eliviate the problem.