diff --git a/ansi-tests/flet.lsp b/ansi-tests/flet.lsp
index aee24b60ca23d87dcca75bd7e5408ed196dff7c5..3bfa919ed232f64cb91fbaccd7da09504d04a72c 100644
--- a/ansi-tests/flet.lsp
+++ b/ansi-tests/flet.lsp
@@ -478,3 +478,29 @@
 		 y))
 	(%f))))
   :good)
+
+(deftest flet.64
+  (let ((x :bad))
+    (declare (special x))
+    (let ((x :good))
+      (flet () (declare (special x)))
+      x))
+  :good)
+
+(deftest flet.65
+  (let ((x :bad))
+    (declare (special x))
+    (let ((x :good))
+      (flet ((%f () (declare (special x)))))
+      x))
+  :good)
+
+(deftest flet.66
+  (let ((x :bad))
+    (declare (special x))
+    (let ((x :good))
+      (flet ((%f () (declare (special x))))
+	x)))
+  :good)
+
+		
\ No newline at end of file
diff --git a/ansi-tests/labels.lsp b/ansi-tests/labels.lsp
index 8a80dfecbba7acf4d1aface4d9bda7851ee3a10a..89bc337a0eb293521cbb561432ae1c351d00465f 100644
--- a/ansi-tests/labels.lsp
+++ b/ansi-tests/labels.lsp
@@ -320,4 +320,26 @@
 	(%f))))
   :good)
 
+(deftest labels.43
+  (let ((x :bad))
+    (declare (special x))
+    (let ((x :good))
+      (labels () (declare (special x)))
+      x))
+  :good)
 
+(deftest labels.44
+  (let ((x :bad))
+    (declare (special x))
+    (let ((x :good))
+      (labels ((%f () (declare (special x)))))
+      x))
+  :good)
+
+(deftest labels.45
+  (let ((x :bad))
+    (declare (special x))
+    (let ((x :good))
+      (labels ((%f () (declare (special x))))
+	x)))
+  :good)
diff --git a/ansi-tests/let.lsp b/ansi-tests/let.lsp
index 9345ca1fbdd57450aaa4ff9810d71ff72e834a71..3a63c7fc4d3bc7388122a59bbb03d493cc2f30c5 100644
--- a/ansi-tests/let.lsp
+++ b/ansi-tests/let.lsp
@@ -89,7 +89,7 @@
 
 ;;; Tests of large number of LET variables
 (deftest let.14
-  (let* ((n 1000)
+  (let* ((n 100)
 	 (vars (mapcar #'gensym (make-list n :initial-element "G")))
 	 (expr `(let ,(let ((i 0))
 			(mapcar #'(lambda (v) (list v (incf i))) vars))
@@ -130,6 +130,27 @@
 	y)))
   :good)
 
+(deftest let.17a
+  (funcall
+   (compile
+    nil
+    '(lambda ()
+       (let ((x :bad))
+	 (declare (special x))
+	 (let ((x :good)) ;; lexical binding
+	   (let ((y x))
+	     (declare (special x)) ;; free declaration
+	     y))))))
+  :good)
+
+(deftest let.18
+  (let ((foo 'special))
+    (declare (special foo))
+    (let ((foo 'lexical))
+      (locally (declare (special foo)))
+      foo))
+  lexical)
+
 ;;; Tests for LET*
 
 (deftest let*.1
@@ -208,7 +229,7 @@
 
 ;;; Tests of large number of LET* variables
 (deftest let*.14
-  (let* ((n 1000)
+  (let* ((n 100)
 	 (vars (mapcar #'gensym (make-list n :initial-element "G")))
 	 (expr `(let* ,(let ((i 0))
 			 (mapcar #'(lambda (v) (list v (incf i))) vars))
@@ -249,3 +270,37 @@
 	y)))
   :good)
 
+(deftest let*.17a
+  (funcall
+   (compile
+    nil
+    '(lambda ()
+       (let ((x :bad))
+	 (declare (special x))
+	 (let ((x :good)) ;; lexical binding
+	   (let* ((y x))
+	     (declare (special x)) ;; free declaration
+	     y))))))
+  :good)
+
+(deftest let*.18
+  (let ((x :bad1)
+	(z :bad2))
+    (declare (special x z))
+    (let ((x :good)
+	  (z :good)) ;; lexical bindings
+      (let* ((y x)
+	     (w z))
+	(declare (special x)) ;; free declaration
+	(values y w))))
+  :good
+  :good)
+
+(deftest let*.19
+  (let ((foo 'special))
+    (declare (special foo))
+    (let* ((foo 'lexical))
+      (locally (declare (special foo)))
+      foo))
+  lexical)
+