diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 735217b..717414f 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -25849,11 +25849,11 @@
       label__2__break:;
       v_node_index = v_stack_values[(v_stack_height - 1)];
       if (v_symbol_index < 2) {
-        v_leaf_value = ((uint16_t)((1280 + v_symbol_index)));
+        v_leaf_value = ((uint16_t)((769 + v_symbol_index)));
       } else if ((v_symbol_index + 1) < self->private_impl.f_num_symbols) {
-        v_leaf_value = ((uint16_t)((1023 + v_symbol_index)));
+        v_leaf_value = ((uint16_t)((511 + v_symbol_index)));
       } else {
-        v_leaf_value = 2047;
+        v_leaf_value = 768;
       }
       if (self->private_data.f_huffman_trees[a_which][v_node_index][0] == 0) {
         self->private_data.f_huffman_trees[a_which][v_node_index][0] = v_leaf_value;
@@ -26200,7 +26200,7 @@
     v_table_entry = self->private_data.f_huffman_tables[v_which][(v_bits >> 24)];
     v_bits <<= (v_table_entry >> 12);
     v_n_bits -= ((uint32_t)((v_table_entry >> 12)));
-    v_child = (v_table_entry & 2047);
+    v_child = (v_table_entry & 1023);
     while (v_child < 257) {
       v_child = self->private_data.f_huffman_trees[v_which][v_child][(v_bits >> 31)];
       v_bits <<= 1;
@@ -26210,7 +26210,7 @@
       }
       v_n_bits -= 1;
     }
-    if (v_child < 1280) {
+    if (v_child < 768) {
       v_child_ff = ((uint32_t)((v_child & 255)));
       v_output = ((uint32_t)(self->private_data.f_mtft[v_child_ff]));
       wuffs_base__slice_u8__copy_from_slice(wuffs_base__make_slice_u8_ij(self->private_data.f_mtft, 1, (1 + v_child_ff)), wuffs_base__make_slice_u8(self->private_data.f_mtft, v_child_ff));
@@ -26224,7 +26224,7 @@
       v_block_size += 1;
       v_run_shift = 0;
       goto label__outer__continue;
-    } else if (v_child > 1281) {
+    } else if (v_child == 768) {
       self->private_impl.f_decode_huffman_finished = true;
       goto label__outer__break;
     }
@@ -26232,7 +26232,7 @@
       status = wuffs_base__make_status(wuffs_bzip2__error__bad_block_length);
       goto exit;
     }
-    v_run = (((uint32_t)((v_child - 1279))) << v_run_shift);
+    v_run = ((((uint32_t)(v_child)) & 3) << v_run_shift);
     v_run_shift += 1;
     v_i = v_block_size;
     v_j = (v_run + v_block_size);
@@ -26339,7 +26339,7 @@
         if (v_child < 257) {
           v_node_index = ((uint32_t)(v_child));
           goto label__0__continue;
-        } else if (v_child < 1280) {
+        } else if (v_child < 768) {
           v_child_ff = ((uint32_t)((v_child & 255)));
           v_output = ((uint32_t)(self->private_data.f_mtft[v_child_ff]));
           wuffs_base__slice_u8__copy_from_slice(wuffs_base__make_slice_u8_ij(self->private_data.f_mtft, 1, (1 + v_child_ff)), wuffs_base__make_slice_u8(self->private_data.f_mtft, v_child_ff));
@@ -26353,7 +26353,7 @@
           self->private_impl.f_block_size += 1;
           self->private_impl.f_decode_huffman_run_shift = 0;
           goto label__0__break;
-        } else if (v_child > 1281) {
+        } else if (v_child == 768) {
           self->private_impl.f_decode_huffman_finished = true;
           goto label__outer__break;
         }
@@ -26361,7 +26361,7 @@
           status = wuffs_base__make_status(wuffs_bzip2__error__bad_block_length);
           goto exit;
         }
-        v_run = (((uint32_t)((v_child - 1279))) << self->private_impl.f_decode_huffman_run_shift);
+        v_run = ((((uint32_t)(v_child)) & 3) << self->private_impl.f_decode_huffman_run_shift);
         self->private_impl.f_decode_huffman_run_shift += 1;
         v_i = self->private_impl.f_block_size;
         v_j = (v_run + self->private_impl.f_block_size);
diff --git a/std/bzip2/decode_bzip2.wuffs b/std/bzip2/decode_bzip2.wuffs
index ee34906..19f670f 100644
--- a/std/bzip2/decode_bzip2.wuffs
+++ b/std/bzip2/decode_bzip2.wuffs
@@ -91,11 +91,11 @@
 
 	// huffman_tables[which] caches the result of walking huffman_trees[which]
 	// for each possible 8-bit input. The base.u16 value decomposes as:
-	//  - The low 11 bits are the final node, where finality comes either from
+	//  - The low 10 bits are the final node, where finality comes either from
 	//    hitting a leaf node or from spending all 8 bits of the input. As per
-	//    the build_huffman_tree method, a value of 0x3FF = 1023 or less means
-	//    a branch node and 0x400 = 1024 or more means a leaf node.
-	//  - The middle bit is unused.
+	//    the build_huffman_tree method, a value of 0x100 = 256 or less means
+	//    a branch node and 0x201 = 513 or more means a leaf node.
+	//  - The middle 2 bits are unused.
 	//  - The high 4 bits are the number of input bits spent.
 	huffman_tables : array[6] array[256] base.u16,
 
@@ -544,31 +544,31 @@
 
 // build_huffman_tree builds a canonical Huffman tree given the symbols' code
 // lengths. For the "abraca.txt.bz2" example, the code lengths are:
-//  - symbol=0x500 (RUNA)  cl=3
-//  - symbol=0x501 (RUNB)  cl=3
-//  - symbol=0x401 (m01)   cl=2
-//  - symbol=0x402 (m02)   cl=3
-//  - symbol=0x403 (m03)   cl=2
-//  - symbol=0x7FF (EOB)   cl=3
+//  - symbol=0x301 (RUNA)  cl=3
+//  - symbol=0x302 (RUNB)  cl=3
+//  - symbol=0x201 (m01)   cl=2
+//  - symbol=0x202 (m02)   cl=3
+//  - symbol=0x203 (m03)   cl=2
+//  - symbol=0x300 (EOB)   cl=3
 //
 // The bitstring mapping is:
-//  - "00"   0x401 (m01)
-//  - "01"   0x403 (m03)
-//  - "100"  0x500 (RUNA)
-//  - "101"  0x501 (RUNB)
-//  - "110"  0x402 (m02)
-//  - "111"  0x7FF (EOB)
+//  - "00"   0x201 (m01)
+//  - "01"   0x203 (m03)
+//  - "100"  0x301 (RUNA)
+//  - "101"  0x302 (RUNB)
+//  - "110"  0x202 (m02)
+//  - "111"  0x300 (EOB)
 //
 // The Huffman tree has 5 branch nodes (where 5+1 is both the number of leaf
 // nodes and the number of symbols). Each branch node has two children,
-// represented by a base.u16 value. 256 = 0x100 or less means that the child is
-// a branch node. 1024 = 0x400 or above means a leaf node (with the symbol
-// values as above).
+// represented by a base.u16 value. 0x100 = 256 or less means that the child is
+// a branch node. 0x201 ..= 0x2FF means an mNN leaf node. 0x300, 0x301 and
+// 0x302 mean EOB, RUNA and RUNB leaf nodes.
 //  - node0 = [0x001 (node1), 0x002 (node2)]
-//  - node1 = [0x401 (m01)  , 0x403 (m03)  ]
+//  - node1 = [0x201 (m01)  , 0x203 (m03)  ]
 //  - node2 = [0x003 (node3), 0x004 (node4)]
-//  - node3 = [0x500 (RUNA) , 0x501 (RUNB) ]
-//  - node4 = [0x402 (m02)  , 0x7FF (EOB)  ]
+//  - node3 = [0x301 (RUNA) , 0x302 (RUNB) ]
+//  - node4 = [0x202 (m02)  , 0x300 (EOB)  ]
 //
 // For example, the tree walk from node0 right (1) to node2 left (0) to node3
 // left (0) to RUNA means that the RUNA bitstring is "100".
@@ -577,12 +577,12 @@
 // length order, maintaining a stack of nodes that's the path from the root
 // (node0) to the latest created-but-unfinished node. Created means that their
 // left child is assigned (non-zero). Unfinished means that their right child
-// is pending (zero). For example, after adding the 0x401, 0x403 and 0x500
+// is pending (zero). For example, after adding the 0x201, 0x203 and 0x301
 // symbols, we would have this (in-progress) tree:
 //  - node0 = [0x001 (node1), 0x002 (node2)]
-//  - node1 = [0x401 (m01)  , 0x403 (m03)  ]
+//  - node1 = [0x201 (m01)  , 0x203 (m03)  ]
 //  - node2 = [0x003 (node3), 0            ]
-//  - node3 = [0x500 (RUNA) , 0            ]
+//  - node3 = [0x301 (RUNA) , 0            ]
 //
 // The stack would be [node0, node2, node3]. The next symbol would fill in the
 // top of the stack, node3. If that symbol's code length matches the stack
@@ -650,11 +650,11 @@
 
 			node_index = stack_values[stack_height - 1]
 			if symbol_index < 2 {
-				leaf_value = (0x500 + symbol_index) as base.u16
+				leaf_value = (0x301 + symbol_index) as base.u16
 			} else if (symbol_index + 1) < this.num_symbols {
-				leaf_value = (0x3FF + symbol_index) as base.u16
+				leaf_value = (0x1FF + symbol_index) as base.u16
 			} else {
-				leaf_value = 0x7FF
+				leaf_value = 0x300
 			}
 
 			if this.huffman_trees[args.which][node_index][0] == 0 {
diff --git a/std/bzip2/decode_huffman_fast.wuffs b/std/bzip2/decode_huffman_fast.wuffs
index 05e5b8c..eb404d0 100644
--- a/std/bzip2/decode_huffman_fast.wuffs
+++ b/std/bzip2/decode_huffman_fast.wuffs
@@ -27,7 +27,7 @@
 	var i           : base.u32
 	var j           : base.u32
 	var output      : base.u32[..= 255]
-	var run         : base.u32[..= 16_777216]  // 16_777216 = (2 << 23)
+	var run         : base.u32[..= 12_582912]  // 12_582912 = (3 << 22)
 	var mtft0       : base.u32[..= 255]
 
 	bits = this.bits
@@ -58,7 +58,7 @@
 		table_entry = this.huffman_tables[which][bits >> 24]
 		bits ~mod<<= table_entry >> 12
 		n_bits -= (table_entry >> 12) as base.u32
-		child = table_entry & 0x7FF
+		child = table_entry & 0x3FF
 		while child < 257 {
 			child = this.huffman_trees[which][child][bits >> 31]
 			bits ~mod<<= 1
@@ -68,7 +68,7 @@
 			n_bits -= 1
 		} endwhile
 
-		if child < 1280 {  // mNN symbol.
+		if child < 0x300 {  // mNN symbol.
 			// Move to front.
 			child_ff = (child & 0xFF) as base.u32
 			output = this.mtft[child_ff] as base.u32
@@ -85,7 +85,7 @@
 			block_size += 1
 			run_shift = 0
 			continue.outer
-		} else if child > 1281 {  // EOB symbol.
+		} else if child == 0x300 {  // EOB symbol.
 			this.decode_huffman_finished = true
 			break.outer
 		}
@@ -94,7 +94,7 @@
 		if run_shift >= 23 {
 			return "#bad block length"
 		}
-		run = ((child - 1279) as base.u32) << run_shift
+		run = ((child as base.u32) & 3) << run_shift
 		run_shift += 1
 		i = block_size
 		j = run + block_size
diff --git a/std/bzip2/decode_huffman_slow.wuffs b/std/bzip2/decode_huffman_slow.wuffs
index 5c41a83..035f0c8 100644
--- a/std/bzip2/decode_huffman_slow.wuffs
+++ b/std/bzip2/decode_huffman_slow.wuffs
@@ -21,7 +21,7 @@
 	var i        : base.u32
 	var j        : base.u32
 	var output   : base.u32[..= 255]
-	var run      : base.u32[..= 16_777216]  // 16_777216 = (2 << 23)
+	var run      : base.u32[..= 12_582912]  // 12_582912 = (3 << 22)
 	var mtft0    : base.u32[..= 255]
 
 	// Apply the Huffman trees.
@@ -53,7 +53,7 @@
 				node_index = child as base.u32
 				continue
 
-			} else if child < 1280 {  // mNN symbol.
+			} else if child < 0x300 {  // mNN symbol.
 				// Move to front.
 				child_ff = (child & 0xFF) as base.u32
 				output = this.mtft[child_ff] as base.u32
@@ -71,7 +71,7 @@
 				this.decode_huffman_run_shift = 0
 				break
 
-			} else if child > 1281 {  // EOB symbol.
+			} else if child == 0x300 {  // EOB symbol.
 				this.decode_huffman_finished = true
 				break.outer
 			}
@@ -80,7 +80,7 @@
 			if this.decode_huffman_run_shift >= 23 {
 				return "#bad block length"
 			}
-			run = ((child - 1279) as base.u32) << this.decode_huffman_run_shift
+			run = ((child as base.u32) & 3) << this.decode_huffman_run_shift
 			this.decode_huffman_run_shift += 1
 			i = this.block_size
 			j = run + this.block_size
