(defun factorial (x &aux (f 1))
  (tagbody
   0 (if (<= x 0) (go 4))
   1 (setf f (* f x))
   2 (decf x)
   3 (go 0)
   4 (return-from factorial f)))

(format t "Fact(~d) -> ~d" #1=42 (factorial #1#))