diff --git a/ansi-tests/do-all-symbols.lsp b/ansi-tests/do-all-symbols.lsp
index 7570aae89616c125eb388258fb6f4bf3e7bdfee1..8deac96dcbefe28d8a57af5765723db9bf4edb28 100644
--- a/ansi-tests/do-all-symbols.lsp
+++ b/ansi-tests/do-all-symbols.lsp
@@ -110,3 +110,15 @@
       (do-all-symbols (s x)
 	(declare (special x)))))
   :good)
+
+;;; Executing a return actually terminates the loop
+
+(deftest do-all-symbols.12
+  (let ((should-have-returned nil))
+    (block done
+      (do-all-symbols (s :bad1)
+	(when should-have-returned
+	  (return-from done :bad2))
+	(setq should-have-returned t)
+	(return :good))))
+  :good)