hi james siffel , that thing described by Booze Daily is the internal sequence counter : it is there as a last resort, thus if you can't restart a program by using it then it means that something is wrong
this counter does not reset in case of pushing the emergency-stop or the hard-reset-button, helping to pin-point the last executed sequence
it's value does not always represent the number of blocks, thus a program with 10 blocks may require more than 10 internal sequences to be processed by the controller ( think of cycles, looped codes, etc )
it may behave faulty if it is used on a program that contains VRSTT, or if it is looped based on a common variable, thus based on a sequence that is executed from a source <> main program; try to restart a dnc like that
for your program i would recomand restarting on the 1st block inside the soubroutine + order number <> 1 ( 2 for 2nd part, 3 for 3rd, etc ); this method is simpler
kindly
ps : i can't help with M90