Points obtained from the getpoint function are defined relative to the UCS.
Polyline vertices and block insertion points are defined relative to the OCS.
Points supplied to AutoCAD commands and the ssget point list are defined relative to the UCS.
Points supplied to the ActiveX move method are defined relative to the WCS.
As such, change:
(IF (= PPA 10) (SETQ PPL (APPEND PPL (LIST PPV))))
To:
(IF (= PPA 10) (SETQ PPL (APPEND PPL (LIST (trans PPV pen 1)))))
Change:
(setq bpt (cdr (assoc 10 (entget (ssname sset ctr)))))
To:
(setq bpt (trans (cdr (assoc 10 (entget (ssname sset ctr)))) item 0))
Change:
(if (= chk 1) (PK:mycopy copyitem bpt fpt))
To:
(if (= chk 1) (PK:mycopy copyitem bpt (trans fpt 1 0)))
The above is untested, but should get you most of the way there.