diff --git a/code/extensions.lisp b/code/extensions.lisp
index 126b07505b1e7e1ec178e48d916d1a753ff1fc8c..857414ebdcb0397aff1469b297339d5beb00be11 100644
--- a/code/extensions.lisp
+++ b/code/extensions.lisp
@@ -450,6 +450,7 @@
 				 (- ,n-index ,entry-size))
 		       (,n-cache ,var-name))
 		      ((minusp ,n-index))
+		    (declare (type fixnum ,n-index))
 		    (when (,test (svref ,n-cache ,n-index) ,arg-name)
 		      (let ((,n-index (- ,n-index ,n)))
 			,@(mapcar #'(lambda (i val)
@@ -465,6 +466,7 @@
 	 `(defun ,fun-name ,(arg-vars)
 	    (let ((,n-index (* (,hash-function ,@(arg-vars)) ,entry-size))
 		  (,n-cache ,var-name))
+	      (declare (type fixnum ,n-index))
 	      (if (and ,@(tests))
 		  (values ,@(mapcar #'(lambda (x) `(svref ,n-cache ,x))
 				    (values-indices)))
@@ -476,6 +478,7 @@
 	 `(defun ,fun-name (,@(arg-vars) ,@(values-names))
 	    (let ((,n-index (* (,hash-function ,@(arg-vars)) ,entry-size))
 		  (,n-cache ,var-name))
+	      (declare (type fixnum ,n-index))
 	      ,@(sets)
 	      ,@(mapcar #'(lambda (i val)
 			    `(setf (svref ,n-cache ,i) ,val))
@@ -489,6 +492,7 @@
 	    (do ((,n-index ,(- total-size entry-size) (- ,n-index ,entry-size))
 		 (,n-cache ,var-name))
 		((minusp ,n-index))
+	      (declare (type fixnum ,n-index))
 	      ,@(collect ((arg-sets))
 		  (dotimes (i nargs)
 		    (arg-sets `(setf (svref ,n-cache (+ ,n-index ,i)) nil)))