Index: /branches/ia32/level-0/X86/X8632/x8632-bignum.lisp
===================================================================
--- /branches/ia32/level-0/X86/X8632/x8632-bignum.lisp	(revision 9604)
+++ /branches/ia32/level-0/X86/X8632/x8632-bignum.lisp	(revision 9605)
@@ -431,14 +431,17 @@
     (vector-length bignum temp0)
     (xorl (% i) (% i))
-    (movl ($ '32) (% zeros))
+    (xorl (% zeros) (% zeros))
     @loop
     (movl (@ x8632::misc-data-offset (% bignum) (% i)) (% imm0))
+    (testl (% imm0) (% imm0))
+    (jnz @last)
+    (addl ($ '32) (% zeros))
     (addl ($ '1) (% i))
-    (addl ($ '32) (% zeros))
-    (testl (% imm0) (% imm0))
-    (jz @loop)
+    (cmpl (% len) (% i))
+    (jb @loop)
+    @last
     ;; now count zero bits in digit
-    (bsrl (% imm0) (% imm0))
-    (box-fixnum imm0 imm0)
+    (bsfl (% imm0) (% imm0))
+    (shll ($ x8632::fixnumshift) (% imm0))
     (addl (% imm0) (% zeros))
     (movl (% zeros) (% arg_z))
