anchor.diff:    (multiple-value-bind (body decls) (parse-body orig-body)
       (let (vars hoisted-vars labels macros symbol-macros in-let? exprs)
         (declare (special in-let?))
  -      (labels ((expand-body (body)
  +      (labels ((expand-top (forms)
  +                 (if (null forms)
  +                     nil
  +                     (let ((form (first forms)))
  +                       (multiple-value-bind (exp macro?)
  +                           (expand-partially form)
  +                         (if macro?
  +                             (return-from local
  +                               `(symbol-macrolet ,symbol-macros
  +                                  (macrolet ,macros
  +                                    (local ,@(remove form orig-body)))))
  +                             (cons exp (expand-top (rest forms))))))))
  +               (expand-body (body)
                    (expand-partially `(progn ,@body)))
                  (expand-partially (form)
                    (if (consp form)
  
positive.code:                           (error "Macros in `local' cannot be defined as closures."))
                          (push (list* name args body) macros)
                          ;; `defmacro' returns a symbol.
                          `',name)
                         ((define-symbol-macro sym exp)
                          (when (or (member sym vars)
                                    (member sym hoisted-vars :key #'car))
  
negative.code:                      (progn
                         (push form exprs)
                         form))))
          (let ((body (expand-top body)))
            (cond ((not (or vars hoisted-vars labels macros symbol-macros))
                   `(locally ,@decls ,@body))
                  ((no body)
  