diff --git a/pdf.c b/pdf.c
index 88739894670864196cf08f78e3f422e5acd9dcf2..058423ebdd9dbbf9fb64b8ffec8297b8f2a2f488 100644
--- a/pdf.c
+++ b/pdf.c
@@ -701,8 +701,7 @@ act_ahexstream(const HParseResult *p, void *u)
 
 
 
-/* 2^32-1, the max value the group can hold as per spec */
-#define A85GRPMAX 4294967295
+#include <limits.h>	/* UINT32_MAX */
 
 HParsedToken *
 act_a85zero(const HParseResult *p, void *u)
@@ -724,7 +723,7 @@ act_a85digit(const HParseResult *p, void *u)
 HParsedToken *
 act_a85fivedigits(const HParseResult *p, void *u)
 {
-	uint32_t fourbytes = 0;
+	uint64_t fourbytes = 0;
 	HCountedArray *seq = H_CAST_SEQ(p->ast);
 	HParsedToken **digits = h_seq_elements(p->ast);
 
@@ -748,12 +747,12 @@ validate_a85fivedigits(HParseResult *p, void *u)
 	/* 2^32-1 is the max value the group can hold as per spec */
 	/* "s8W-!" should be the highest accepted value */
 
-	uint32_t val = H_CAST_UINT(p->ast);
+	uint64_t val = H_CAST_UINT(p->ast);
 
 	// look into approaches to reporting violations
 	// from these validation check routines
 	// XXX: VIOL() wrappers for a85fivedigits
-	return  ( (val > 0) && (val <= A85GRPMAX) );
+	return  ( (val > 0) && (val <= UINT32_MAX) );
 }
 
 HParsedToken *
@@ -804,12 +803,6 @@ act_a85partial2group(const HParseResult *p, void *u)
 	return H_MAKE_BYTES(bytes, 1);
 }
 
-bool
-validate_a85partial2group(HParseResult *p, void *u)
-{
-	return (H_CAST_BYTES(p->ast).token[0] << 24) <= A85GRPMAX;
-}
-
 HParsedToken *
 act_a85partial3group(const HParseResult *p, void *u)
 {
@@ -844,12 +837,6 @@ act_a85partial3group(const HParseResult *p, void *u)
 	return H_MAKE_BYTES(bytes, 2);
 }
 
-bool
-validate_a85partial3group(HParseResult *p, void *u)
-{
-	return ((H_CAST_BYTES(p->ast).token[0] << 24) + (H_CAST_BYTES(p->ast).token[1] << 16)) <= A85GRPMAX;
-}
-
 HParsedToken *
 act_a85partial4group(const HParseResult *p, void *u)
 {
@@ -880,12 +867,6 @@ act_a85partial4group(const HParseResult *p, void *u)
 	return H_MAKE_BYTES(bytes, 3);
 }
 
-bool
-validate_a85partial4group(HParseResult *p, void *u)
-{
-	return ((H_CAST_BYTES(p->ast).token[0] << 24) + (H_CAST_BYTES(p->ast).token[1] << 16) + (H_CAST_BYTES(p->ast).token[2] << 8)) <= A85GRPMAX;
-}
-
 HParsedToken *
 act_a85partialgroup(const HParseResult *p, void *u)
 {
@@ -3012,9 +2993,9 @@ init_parser(struct Env *aux)
 	// TODO:: will need to pull out error conditions -- a85fiveexcl or 'z' as one of the digits
 	H_ARULE(a85group,	CHX(a85zero, a85fivedigits));
 
-	H_VARULE(a85partial2group,	h_repeat_n(SEQ(a85digit, aws), 2));
-	H_VARULE(a85partial3group,	h_repeat_n(SEQ(a85digit, aws), 3));
-	H_VARULE(a85partial4group,	h_repeat_n(SEQ(a85digit, aws), 4));
+	H_ARULE(a85partial2group,	h_repeat_n(SEQ(a85digit, aws), 2));
+	H_ARULE(a85partial3group,	h_repeat_n(SEQ(a85digit, aws), 3));
+	H_ARULE(a85partial4group,	h_repeat_n(SEQ(a85digit, aws), 4));
 	H_RULE(a85partialgroup,	CHX(a85partial4group, a85partial3group, a85partial2group));
 
 	H_ARULE(a85string,	SEQ(h_many(a85group), h_optional(a85partialgroup), IGN(a85eod)));