Some additional remarks concerning your sheet.
The call to the functions STEP4a and b are always returning the same value because the calling parameter does not change (as far a I can tell) and the other variables used in the function definition are those at the time of defining the function, so they don't change.
The variable v.xy is not defined but used right at the beginning of your program for a comparison in the outer while loop. v.xy has to be assigned an initial value.
Line like f.sy <-- f.sy have no effect in Mathcad. What do you think that should happen here?
The outer while loop ends in a return statement. This statement stops the whole program, so the loop has no effect.
If you asign v.xy an initial value at the top of the program and delete the inner return statement so the outer loop may make sense, your program performs a lot of iterations until it fails because v.xy gets complex and (the outer while) you cannot compare complex numbers for size.