The important thing to keep in mind is that the loop() function is named that for a reason - because it loops. Let it handle all the looping. On any given pass through loop(), it may be necessary to step, or not. If it is, it may be time to step, or not. if it is, step and record when you last stepped.
No need to delay() and no need to have big for loops that seemingly never end.