diff --git a/ccitt/reader.go b/ccitt/reader.go
index 66a928c..16bd495 100644
--- a/ccitt/reader.go
+++ b/ccitt/reader.go
@@ -158,13 +158,13 @@
 // bitReader.nBits value above nextBitMaxNBits.
 const nextBitMaxNBits = 31
 
-func (b *bitReader) nextBit() (uint32, error) {
+func (b *bitReader) nextBit() (uint64, error) {
 	for {
 		if b.nBits > 0 {
-			bit := (b.bits >> 63) & 1
+			bit := b.bits >> 63
 			b.bits <<= 1
 			b.nBits--
-			return uint32(bit), nil
+			return bit, nil
 		}
 
 		if available := b.bw - b.br; available >= 4 {
@@ -207,7 +207,7 @@
 		if err != nil {
 			return 0, err
 		}
-		bitsRead |= uint64(bit) << (63 - nBitsRead)
+		bitsRead |= bit << (63 - nBitsRead)
 		nBitsRead++
 		// The "&1" is redundant, but can eliminate a bounds check.
 		state = int32(decodeTable[state][bit&1])
diff --git a/ccitt/reader_test.go b/ccitt/reader_test.go
index 21ee5eb..3427a49 100644
--- a/ccitt/reader_test.go
+++ b/ccitt/reader_test.go
@@ -161,27 +161,27 @@
 		m[code.val] = code.str
 	}
 
-	// Build the encoded form of those values in LSB order.
+	// Build the encoded form of those values in MSB order.
 	enc := []byte(nil)
 	bits := uint8(0)
-	nBits := uint8(7)
+	nBits := uint32(0)
 	for _, v := range values {
 		code := m[v]
 		if code == "" {
 			panic("unmapped code")
 		}
 		for _, c := range code {
-			bits |= uint8(c&1) << nBits
-			if nBits == 0 {
+			bits |= uint8(c&1) << (7 - nBits)
+			nBits++
+			if nBits == 8 {
 				enc = append(enc, bits)
 				bits = 0
-				nBits = 7
+				nBits = 0
 				continue
 			}
-			nBits--
 		}
 	}
-	if nBits < 7 {
+	if nBits > 0 {
 		enc = append(enc, bits)
 	}
 
