anchor.diff:                     (setf x (char-width char x)))))
     (charms/ll:wattroff scrwin attr))
   
  -(defun screen-print-string (screen x y string)
  -  (scrwin-print-string (screen-%scrwin screen) x y string nil))
  -
  -(defun screen-print-string-attr (screen x y string attr)
  +(defun screen-print-string (screen x y string attr)
     (scrwin-print-string (screen-%scrwin screen) x y string attr))
   
   (defun screen-move-cursor (screen x y)
  
positive.code:                          (start-x left-width)
                           y2)
                       (when left-str/attr
                         (screen-print-string-attr screen
                                                   0
                                                   y
                                                   (car left-str/attr)
                                                   (cdr left-str/attr)))
                       (let ((*print-start-x* start-x))
                         (multiple-value-setq
                          (visual-cursor-x visual-cursor-y y2)
  
negative.code:       (loop :for (start end attr) :in attributes
              :do (setf end (min (length str) end))
              :do (progn
                    (screen-print-string screen x y (subseq str prev-end start) nil)
                    (incf x (string-width str prev-end start)))
              :do (progn
                    (screen-print-string screen x y (subseq str start end) attr)
                    (incf x (string-width str start end)))
              :do (setf prev-end end))
        (screen-print-string screen x y
                             (if (= prev-end 0)
                                 str
                                 (subseq str prev-end))
                             nil))
      (when do-clrtoeol
        (charms/ll:wclrtoeol (screen-%scrwin screen)))))
  
  