diff --git a/module/language/tree-il/cse.scm b/module/language/tree-il/cse.scm
index 40f6419..f8fd1cd 100644
--- a/module/language/tree-il/cse.scm
+++ b/module/language/tree-il/cse.scm
@@ -324,10 +324,11 @@
                (and (< n env-len)
                     (match (vlist-ref env n)
                       ((#(exp* name sym db-len*) . h*)
-                       (and (unroll db m (- db-len db-len*))
-                            (if (and (= h h*) (tree-il=? exp* exp))
-                                (make-lexical-ref (tree-il-src exp) name sym)
-                                (lp (1+ n) (- db-len db-len*))))))))))))
+                       (let ((niter (- (- db-len db-len*) m)))
+                         (and (unroll db m niter)
+                              (if (and (= h h*) (tree-il=? exp* exp))
+                                  (make-lexical-ref (tree-il-src exp) name sym)
+                                  (lp (1+ n) (- db-len db-len*)))))))))))))
 
   (define (lookup-lexical sym env)
     (let ((env-len (vlist-length env)))
