anchor.diff:  (eval-when (:compile-toplevel :load-toplevel :execute)
     (defun expand-macro (args-name lambda-list body)
       (if (null lambda-list)
  -        `(progn (if ,args-name
  -                    (error "to many arguments passed to macro"))
  +        `(progn (cl:when ,args-name
  +                  (error "to many arguments passed to macro"))
                   ,@body)
           ;; if the first item in the lambda list is a list, then we
           ;; treat it as its own lambda list and let lambda handle it
  
positive.code:             ;; &body just treat the rest of the lambda list as usual
              (if (member (first lambda-list) '(&rest &optional &key &body))
                  ;; lambda doesnt know what &body is, so convert it to &rest
                  ((lambda (body-pos)
                     (if body-pos
                         (setf (nth body-pos lambda-list) '&rest))
                     `(apply (lambda (,@lambda-list)
                               ,@body)
                             ,args-name))
                   (position '&body lambda-list))
                  `(apply (lambda (,args-name ,(first lambda-list))
                            ,(expand-macro args-name (rest lambda-list) body))
                          (rest ,args-name) (first ,args-name) nil)))))
  
negative.code:   (setf (macro-function 'defmacro)
          (lambda (whole env)
            (declare (ignore env))
            (cl:let ((macro-name (cadr whole))
                     (lambda-list (caddr whole))
                     (body (cdddr whole))
                     (args (gensym "ARGS")))
              `(eval-when (:compile-toplevel :load-toplevel :execute)
                 (setf (macro-function ',macro-name)
                       (lambda (whole env)
                         (declare (ignore env))
                         (cl:let ((,args (rest whole)))
                           ,(expand-macro args
                                          lambda-list
                                          body)))))))))
  
  (defun macroexpand-1 (form &optional env)
    (if (macro-function (car form))
  