hY,

I have a feeling this is a bug.

(defvar mylist '(:one :two :three))

(iter (for var on mylist)
      (collect (car var) into result)
      (finally (return (values result var))))
(:ONE :TWO :THREE)
(:THREE)


I think var should be empty at the end, so the result would match the result of loop as

(loop for var on mylist
      collect (car var) into result
      finally (return (values result var)))
(:ONE :TWO :THREE)
NIL

The problem is caused by the end test code location.
The bold lines should appear in reverse order, I think.

(macroexpand-1 '(iter (for var on mylist)
                      (collect (car var) into result)
                      (finally (return (values result var)))))
(LET* ((#:LIST214 NIL)
       (VAR NIL)
       (RESULT NIL)
       (#:END-POINTER215 NIL)
       (#:TEMP216 NIL))
  (BLOCK NIL
    (TAGBODY
      (PROGN (SETQ #:LIST214 MYLIST))
     LOOP-TOP-NIL
      (PROGN
       (IF (ATOM #:LIST214)
           (GO LOOP-END-NIL))
       (SETQ VAR #:LIST214)
       (SETQ #:LIST214 (CDR #:LIST214))
       (PROGN
        (SETQ #:TEMP216 (LIST (CAR VAR)))
        (SETQ #:END-POINTER215
                (IF RESULT
                    (SETF (CDR #:END-POINTER215) #:TEMP216)
                    (SETQ RESULT #:TEMP216)))
        RESULT))
      (PROGN)
      (GO LOOP-TOP-NIL)
     LOOP-END-NIL
      (PROGN (RETURN (VALUES RESULT VAR))))
    NIL))

Best,
` bg`