Yes, that's a bit of a gotcha - that "sleep" after a DRO update is absolutely vital, as is the "while moving" loop so you wait for the machine to reach target position before carrying out the next action. However, my version works fine with soft limits, so not sure what's going on there.