--- /Users/rpg/lisp/iterate/iterate.lisp	2012-01-05 13:38:20.000000000 -0600
+++ /Users/rpg/lisp/vendor/iterate/iterate.lisp	2012-01-04 19:34:52.000000000 -0600
@@ -2078,8 +2078,6 @@ (defun free-vars (form bound-vars)
      nil)
     ((symbolp (car form))
      (cond
-       ((macro-function (car form) *env*)
-        (free-vars (macroexpand-1 form *env*) bound-vars))
        ((or (special-operator-p (car form))
             ;; Lucid doesn't think that these are special forms
             ;; and we need to handle declarations:
@@ -2121,6 +2119,8 @@ (defun free-vars (form bound-vars)
                 (nconc free-vars (free-vars-list body bound-vars))))
           (otherwise
            nil)))
+     ((macro-function (car form) *env*)
+      (free-vars (macroexpand-1 form *env*) bound-vars))
        (t ; function call
         (free-vars-list (cdr form) bound-vars))))
     ((and (consp (car form)) (eq (caar form) 'lambda))
