anchor.diff:  (in-package :lem.universal-argument)
   
   (defparameter *base* 4)
  -(defvar *argument*)
  -(defvar *universal-argument-keymap*
  -  (make-keymap :name '*universal-argument-keymap*
  -               :undef-hook 'universal-argument-default))
   
   (defstruct arg-state
     (type nil)
     (u 1)
     (n '()))
  +
  +(defvar *argument* (make-arg-state))
  +(defvar *universal-argument-keymap*
  +  (make-keymap :name '*universal-argument-keymap*
  +               :undef-hook 'universal-argument-default))
   
   (defun to-integer (arg-state)
     (case (arg-state-type arg-state)
  
positive.code: 
  (define-minor-mode universal-argument-mode
      (:name "C-U"
       :keymap *universal-argument-keymap*)
    (reset-argument))
  
  (define-key *global-keymap* "C-u" 'universal-argument)
  (define-key *universal-argument-keymap* "C-g" 'universal-argument-abort)
  
negative.code: (define-key *universal-argument-keymap* "-" 'universal-argument-minus)
  (loop :for n :from 0 :to 9
        :for command := (read-from-string (format nil "universal-argument-~D" n))
        :do (define-key *global-keymap* (format nil "M-~D" n) command)
            (define-key *universal-argument-keymap* (prin1-to-string n) command)
            (define-key *universal-argument-keymap* (format nil "M-~D" n) command))
  
  (define-command universal-argument () ()
  