Iterate's code walker mangles `(if t (progn) ...)`
It simply omits the progn, inverting the meaning of the condition.
(macroexpand '(iter (if t (progn) (+ x y))))
(LET* ()
(BLOCK NIL
(BLOCK #:ITERATE5558
(TAGBODY
(PROGN)
LOOP-TOP-NIL
(PROGN
(IF T
(+ X Y)))
(PROGN)
(GO LOOP-TOP-NIL)
(PROGN))
NIL)))