A "lisp" [Subject line] is not the same thing as a "script" [end of description], but assuming the former is what you really want....
I don't quite get steps 5 and 6 in relation to each other. Regardless of where the lower left corner of the extent of remaining objects is, if that's what you're after in step 5, moving things from [at].35,.319 to 0,0,0 in step 6 is just moving them that far, so where that all sits in relation to [for example] WCS coordinates doesn't make any difference, and I don't see any point in step 5. If I'm wrong, can you describe it differently? Do you perhaps want to move everything remaining so that the lower left corner of their extents goes to .35,.319 in WCS terms? Or the point [at].35,.319 relative to that lower-left extent goes to WCS 0,0,0? That would put parts of the objects into negative-XY WCS territory, which is why I'm doubtful, but you may have your reasons. Or do you want the lower-left extent point to end up at positive .35,.319 in WCS terms?
If I'm correct that things will just need to be moved that far, regardless of where they lie, try this:
(defun C:TEST (/ ss)
(prompt "\nFor those to KEEP,")
(setq ss (ssget "_:L")); [provides its own Select-objects prompt]
(command
"_.erase" "_all" "_remove" ss ""
"_.move" ss "" "-.35,-.319" "" ; [equivalent to from .35,.319 to 0,0]
); command
); defun
But if you really need to know the lower left corner of the extents of the objects remaining, you can add a REGEN command to reset the EXTMIN and EXTMAX System Variable values, and then get the value of EXTMIN, and use that somehow [depending on what the goal really is] in the Move command. But be aware that EXTMIN can be a little different from what you expect visually with certain conditions of certain entity types [e,g, Mtext whose "box" is larger than the contents in it, and Splines in some cases].
Kent Cooper, AIA