diff --git a/lib/init-7.scm b/lib/init-7.scm
index 748e7821..9e4f34fd 100644
--- a/lib/init-7.scm
+++ b/lib/init-7.scm
@@ -284,7 +284,12 @@
              `(,(rename 'begin)
                ,@(cdr (cddr expr))
                (,(rename 'lp)
-                ,@(map (lambda (x) (if (pair? (cddr x)) (car (cddr x)) (car x)))
+                ,@(map (lambda (x)
+                         (if (pair? (cddr x))
+                             (if (pair? (cdr (cddr x)))
+                                 (error "too many forms in do iterator" x)
+                                 (car (cddr x)))
+                             (car x)))
                        (cadr expr)))))
             (check (car (cddr expr)))
             (wrap