(defun c:fix(/ obl ocm olderr slx ss s sn n slen old_xy new_xy n_x n_y)
  (setq obl (getvar "blipmode")
	ocm (getvar "cmdecho")
	olderr *error* 
       *ERROR* AI_ABORT)
  (setvar "cmdecho" 0)
  (command "_.UNDO" "_GROUP")
  (setvar "blipmode" 0)
  (setq slx (ssget))
  (setq slen (sslength slx)
        n 0)
  (while (< n slen)
    (setq ss (ssname slx n)
          s (entget ss)
          sn (cdr (assoc 0 s)) )
    (if (or (= sn "CIRCLE")(= sn "ARC"))
      (progn
      (setq old_xy (cdr (assoc 10 s)))
      (if (> (car old_xy) 0)
        (setq n_x (fix (+ (car old_xy) 0.5)))
        (setq n_x (fix (- (car old_xy) 0.5)))  )
      (if (> (cadr old_xy) 0)
        (setq n_y (fix (+ (cadr old_xy) 0.5)))
        (setq n_y (fix (- (cadr old_xy) 0.5)))  )
      (setq new_xy (list n_x n_y))
      (command "move" ss "" old_xy new_xy)
    ) )
    (setq n (+ n 1))
  )
  (command "chprop" slx "" "")
  (command "_.UNDO" "_E")
  (setvar "blipmode" obl)
  (setvar "cmdecho" ocm)
  (setq *error* olderr) 
  (princ)
 )