diff --git a/src/bitvector.h b/src/bitvector.h
index 3c0ebbbefc8973d2bc59678cfaa2eddce68558b9..83756fd9a5945b1b685bea24d678c531bf098de3 100644
--- a/src/bitvector.h
+++ b/src/bitvector.h
@@ -30,7 +30,7 @@ static INLINE unsigned INT32 ATTRIBUTE((unused)) clz32(unsigned INT32 i) {
 #elif defined(HAS__BITSCANREVERSE)
     unsigned long index;
     if (_BitScanReverse(&index, (unsigned long)i))
-	return (unsigned INT32)index;
+	return (unsigned INT32)(31 - index);
     return 32;
 #else
     unsigned INT32 t;
@@ -101,7 +101,7 @@ static INLINE unsigned INT32 ATTRIBUTE((unused)) clz64(unsigned INT64 i) {
 # elif defined(HAS__BITSCANREVERSE64)
     unsigned long index;
     if (_BitScanReverse64(&index, i))
-	return index;
+	return (63 - index);
     return 64;
 # else
     unsigned INT64 t;