anchor.diff:    (values (if (symbolp spec) spec (first spec))
             (when (listp spec) (second spec))))
   
  -(defpsmacro defaultf (place value)
  -  `(when (=== ,place undefined)
  -     (setf ,place ,value)))
  +(defpsmacro defaultf (name value suppl)
  +  `(progn
  +     ,@(when suppl `((var ,suppl t)))
  +     (when (=== ,name undefined)
  +       (setf ,name ,value ,@(when suppl (list suppl nil))))))
   
   (defun parse-extended-function (lambda-list body &optional name)
     "Returns two values: the effective arguments and body for a function with
  
positive.code:                      (mapcar #'parse-optional-spec optionals))))
             (opt-forms
              (mapcar #'(lambda (opt-spec)
                          (multiple-value-bind (var val) (parse-optional-spec opt-spec)
                            `(defaultf ,var ,val)))
                      optionals))
             (key-forms
              (when keys?
  
negative.code:                   (with-ps-gensyms (n)
                      (let ((decls nil) (assigns nil) (defaults nil))
                        (mapc (lambda (k)
                                (multiple-value-bind (var init-form keyword-str suppl)
                                    (parse-key-spec k)
                                  (push `(var ,var) decls)
                                  (push `(,keyword-str (setf ,var (aref arguments (1+ ,n)))) assigns)
                                  (push (list 'defaultf var init-form suppl) defaults)))
                              (reverse keys))
                        `(,@decls
                          (loop :for ,n :from ,(length requireds)
  