It's the (SETVAR "OSMODE" 1) that is doing this (resets to endpoint, presumably as part of the lisp routine). I don't know what the lisp is doing (rotating a view perhaps??) as I'm not a lisp expert - there are other contributors to the forum who are and may be able to suggest something.
As an aside, I have put my preferred OSNAPS in a right click macro so i can always reset if i need to temporarily alter them.
OK. Since you probably don't write much lisp. The easiest way to fix this would be to add 2 lines to the lisp code. Add the bold line where shown.
(setvar "cmdecho" 0)
(setq OM (getvar "osmode"))
(setq OB (entsel "\Select object for base angle: "))
Add this line near the end of the lisp.
(setvar "osmode" OM)
The first line sets the current osmode to the variable OM. The second line resets the osmode using the OM variable.
Allen is one of the lisp gurus i mentioned
Sorry to dissuade you Neil. But I'm just a dabbler. I stopped doing anything serious in lisp when autodesk and third party covered most of what I wanted to do. The only things I can do in VLisp is to paste together some things by example.
If you can anything in lisp - you are a guru...