diff --git a/lzw.c b/lzw.c
index 341e31c187a886ac65e000e2fc3b3e3642fcb4b8..2c97f60c3962a439c783432f984cb454b456a92e 100644
--- a/lzw.c
+++ b/lzw.c
@@ -285,7 +285,6 @@ act_LZW_data(const HParseResult *p, void *u)
 		elements[0] -> TT_BYTES representing the initial clear code
 		elements[1] -> TT_BYTES containing the decompressed data
 		elements[2] -> TT_UINT representing the EOD code
-		elements[3] -> TT_UINT representing the remaining bits from EOD to the end of the byte, should be 0
 	*/
 
 	//HCountedArray * seq = H_CAST_SEQ(p->ast);
@@ -332,8 +331,6 @@ void init_LZW_parser()
 	H_VDRULE(LZW_11bitlitspec, h_bits(11, false), context);
 	H_VDRULE(LZW_12bitlitspec, h_bits(12, false), context);
 
-	H_RULE(LZW_remainingbits, h_many(h_bits(1, false))); //XXX: could validate that these bits are 0?
-
 	H_AVDRULE(LZW_clear, h_choice(LZW_9bitlitspec, LZW_10bitlitspec, LZW_11bitlitspec, LZW_12bitlitspec, NULL), context);
 	H_VDRULE(LZW_eod, h_choice(LZW_9bitlitspec, LZW_10bitlitspec, LZW_11bitlitspec, LZW_12bitlitspec, NULL), context);
 	H_AVDRULE(LZW_literal, h_choice(LZW_9bitlitspec, LZW_10bitlitspec, LZW_11bitlitspec, LZW_12bitlitspec, NULL), context);
@@ -341,7 +338,10 @@ void init_LZW_parser()
 
 	H_ADRULE(LZW_body, h_many1(h_butnot(h_choice(LZW_literal, LZW_clear, LZW_codeword, NULL), LZW_eod)), context);
 
-	H_ADRULE(LZW_data, h_sequence(LZW_clear, LZW_body, LZW_eod, LZW_remainingbits, NULL), context);
+	H_ADRULE(LZW_data, h_sequence(LZW_clear, LZW_body, LZW_eod, NULL), context);
+	    // XXX validate that the last byte is zero-padded?
+	    // XXX require h_end_p()?
+
 	p_lzwdata = LZW_data;
 }