Just to help me understand: (1) problem is when J2 is extended out, the max Z height is not high enough to clear objects as the robot moves to Home? (2) After moving up to max height when extended out and then doing a joint move to a position high above Home before moving Home is not practical?

Even if these are true, this can still be done. It just takes a lot more lines to accomplish. Since the max Z height of your M-410 determined by how far J2 is extended, one way to accomplish a safe move Home is to check J2 position and jump to a label where the robot moves to a corresponding max height for that J2 position. Then check X & Y and move a short distance toward Home or safe intermediate position and then loop back to check J2 position again. With enough code, you should be able to stair-step and side-step to the positions you need to clear obstacles and reach Home unscathed.

10: LBL[10:J2_CHK_LOOP] ;

11: ;

12: PR[14:HOME_RECOV_LPOS ]=LPOS ;

13: PR[15:HOME_RECOV_JPOS]=JPOS ;

14: ;

15: R[22:RECOV_J2_POS]=PR[15,2:HOME_RECOV_JPOS] ;

16: ;

17: IF R[22:RECOV_J2_POS]>=90,JMP LBL[20] ;

18: IF R[22:RECOV_J2_POS]>=80,JMP LBL[21] ;

19: IF R[22:RECOV_J2_POS]>=70,JMP LBL[22] ;

20: IF R[22:RECOV_J2_POS]>=60,JMP LBL[23] ;

21: IF R[22:RECOV_J2_POS]>=50,JMP LBL[24] ;

etc.