Very good, Joe.
Basically you're iterating at a sample rate of 1.0 parameters. Change that to
0.5 and you're picking up the midpoint of each bulged segment. I found that the extra evaluations for the closest point to be critical, thus the stepped process rather than mapcar. Anyway, circles, ellipses, and splines don't have a 'Coordinates property, and their end parameter is not a whole number.
I'm not as dumb as I look; I asked Doug to check it out yesterday. Doug quickly found the bug with coincident adjacent vertices, such that (vlax-curve-getpointatparam) returns nil for the midpoint (+ param 0.5)
parameter.