diff --git a/binding.lisp b/binding.lisp
index 681623c7c237ef02747ab3830c0be52f3c66a556..0217db54d0cd9c66b1cdfbb115d23f4218e8cefc 100644
--- a/binding.lisp
+++ b/binding.lisp
@@ -79,15 +79,13 @@ Execution of WHEN-LET* stops immediately if any INITIAL-FORM evaluates to NIL.
 If all INITIAL-FORMs evaluate to true, then BODY is executed as an implicit
 PROGN."
   (let ((binding-list (if (and (consp bindings) (symbolp (car bindings)))
-                          (list bindings)
-                          bindings)))
+                        (list bindings)
+                        bindings)))
     (labels ((bind (bindings body)
                (if bindings
-                   `((let (,(car bindings))
-                       (when ,(caar bindings)
-                         ,@(bind (cdr bindings) body))))
-                   body)))
-      `(let (,(car binding-list))
-         (when ,(caar binding-list)
-           ,@(bind (cdr binding-list) body))))))
+                 `(let (,(car bindings))
+                    (when ,(caar bindings)
+                      (bind (cdr bindings) body)))
+                 `(progn ,@body))))
+      (bind (cdr binding-list) body))))