Without actually looking at your code I'm guessing it's a fuzz factor issue, that is, there are, relatively speaking, differences insiginificant to you, yet mathematically significant to the unadorned equal function for one or more ordinates of the points.
The solution is to use the equal function's optional fuzz factor and apply it on an ordinate by ordinate basis, rather than simply comparing the list of ordinates as a composite value.
It's been done a million times, and I'm sure the first AutoCAD centric solution, and definitive one to boot was penned by Mr. Tanzillo. I've not the time or interest in finding said definitive solution and reposting. Rather, here's a quick offering that you an use as a starting point to be improved upon:
(defun _PointsEqualP ( point1 point2 fuzz )
(vl-every
'(lambda ( a b ) (equal a b fuzz))
point1
point2
)
)
Command: (_PointsEqualP '(1 1) '(1 0.9) 0.01) nil
Command: (_PointsEqualP '(1 1) '(1 0.99) 0.01) nil
Command: (_PointsEqualP '(1 1) '(1 0.999) 0.01) T
For what it's worth / hope it helps.
Doh: Someone snuck in as I went to post this; posting anyway. If superfluous / a repeat please accept my apology.