anchor.diff:  		c
   		(ansi-read-nonctrl))))
   
  -(defun ansi-read-digit (&optional (v 0))
  +(defun ansi-read-natural-number (&optional (v 0))
     (with (c (read-char))
       (if (digit-char-p  c)
  -	    (ansi-read-digit (+ (- c #\0) (* 10 v)))
  +	    (ansi-read-natural-number (+ (- c #\0) (* 10 v)))
   		v)))
   
   (defun ansi-get-position ()
  
positive.code:   (ansi-cmd0 "6n")
    (force-output)
    (when (= #\[ (ansi-read-nonctrl))
       (with (height (ansi-read-digit)
       	    width  (ansi-read-digit))
    	   (%terminal-normal)
  	   (values width height))))
  
  
negative.code: 
  ;;;; Macros.
  
  (defmacro define-ansi-cmd (cmd name args description &rest codes)
    `(defun ,name ,args
  	 ,description
  	 ,(cons cmd codes)))
  
  (defmacro %defz (defname cmd)
    `(defmacro ,defname (name &rest args)
       `(define-ansi-cmd ,cmd ,,name () ,,@args)))
  
  (%defz defs ansi-set-flag)
  (%defz def-sgr ansi-sgr)
  (%defz def0 ansi-cmd0)
  
  (defmacro def1 (&rest args)
    `(define-ansi-cmd ansi-cmd1 ,@args))
  
  (defmacro def2 (&rest args)
    `(define-ansi-cmd ansi-cmd2 ,@args))
  
  ;;;; Public functions.
  
  