diff --git a/src/parsers/bits.c b/src/parsers/bits.c
index be8f13f10a65f67e50d134c5f3557a1a7a209d62..288e3e95a45a7709e942d9987cda37c7e55819b5 100644
--- a/src/parsers/bits.c
+++ b/src/parsers/bits.c
@@ -29,7 +29,7 @@ static HParsedToken *reshape_bits(const HParseResult *p, void* signedp_p) {
   HParsedToken *ret = h_arena_malloc(p->arena, sizeof(HParsedToken));
   ret->token_type = TT_UINT;
 
-  if(signedp && (seq->elements[0]->uint & 128))
+  if(signedp && seq->used > 0 && (seq->elements[0]->uint & 128))
     ret->uint = -1; // all ones
 
   for(size_t i=0; i<seq->used; i++) {