I've got from one user info that 3parray.lsp is not working well when you specify P(x) point on X axis of current UCS...
So I've made this quick fix mod... - now should work as desired :
...
(setq
...
nx (fix (car (list (/ (car (mapcar '- i1 p0)) (if (not (zerop (car vx))) (car vx) 1e-8)) (/ (cadr (mapcar '- i1 p0)) (if (not (zerop (cadr vx))) (cadr vx) 1e-8)))))
ny (fix (cadr (list (/ (car (mapcar '- i2 p0)) (if (not (zerop (car vy))) (car vy) 1e-8)) (/ (cadr (mapcar '- i2 p0)) (if (not (zerop (cadr vy))) (cadr vy) 1e-8)))))
...
); end setq
...
I hope that you can implement this fix in your routine - 3parray.lsp
HTH., M.R.