(defun foo (x) (do ((a x (+ 1 x)) c) ((> a 10) c) (setq c (cons a c)))) Loses both evaluated and compiled because of the ATOM in the variable initialization part of the do. I wanted a temporary named c with initial value ().