diff --git a/binding.lisp b/binding.lisp
index 0217db54d0cd9c66b1cdfbb115d23f4218e8cefc..681623c7c237ef02747ab3830c0be52f3c66a556 100644
--- a/binding.lisp
+++ b/binding.lisp
@@ -79,13 +79,15 @@ 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)))
-                 `(progn ,@body))))
-      (bind (cdr binding-list) body))))
+                   `((let (,(car bindings))
+                       (when ,(caar bindings)
+                         ,@(bind (cdr bindings) body))))
+                   body)))
+      `(let (,(car binding-list))
+         (when ,(caar binding-list)
+           ,@(bind (cdr binding-list) body))))))