I assume that your point list is being obtained from objects - such as contiguous line segments - rather than being typed in explicitly. Using the following functions...
Code:
(defun angs (lst / A LA LT)
(setq lt lst)
(while (cadr lt)
(setq a(rtod(angle (car lt)(cadr lt))))
(setq la(append la(list a)))
(setq lt(cdr lt))
)
la)
(defun rtod (num-rads)
(* 180.0 (/ num-rads pi))
)
... I fed your list of points to (angs), and got the following list:
Code:
(90.0 90.0 0.0 0.0 0.0 270.0 270.0)
(I assume that your RTOD function reduces 'pseudo-parallel' angles, such as 90 and 270 degrees, to the lower representation)
Points read from objects are saved with higher precision than what is represented in your list, and arbitrarily high precision can lead to uncertainty in the calculation. If this is indeed what is happening, I suggest that you round your points to a pre-set number of decimals before running them through your function.