diff --git a/src/parsers/bind.c b/src/parsers/bind.c
index 808df9742bc6e7a1bb6c93a838f9f69903d036e0..87f42330ee8a5a35ef5a026f1060e5937bdc2d16 100644
--- a/src/parsers/bind.c
+++ b/src/parsers/bind.c
@@ -46,7 +46,11 @@ static HParseResult *parse_bind(void *be_, HParseState *state) {
         return NULL;
     }
 
-    return h_do_parse(kx, state);
+    HParseResult *res2 = h_do_parse(kx, state);
+    if(res2)
+        res2->bit_length = 0;   // recalculate
+
+    return res2;
 }
 
 static const HParserVtable bind_vt = {
diff --git a/src/parsers/ignoreseq.c b/src/parsers/ignoreseq.c
index 07bdc65c16b7eb1fb6b868999482fdb23dffa700..af74bccd08d901cc5862b105e7251d491e64f2a0 100644
--- a/src/parsers/ignoreseq.c
+++ b/src/parsers/ignoreseq.c
@@ -24,8 +24,10 @@ static HParseResult* parse_ignoreseq(void* env, HParseState *state) {
     HParseResult *tmp = h_do_parse(seq->parsers[i], state);
     if (!tmp)
       return NULL;
-    else if (i == seq->which)
+    else if (i == seq->which) {
       res = tmp;
+      res->bit_length = 0;  // recalculate
+    }
   }
 
   return res;
diff --git a/src/t_regression.c b/src/t_regression.c
index aa78f2c8c02ad218db7e89f0543c06ebdc3e7f25..3dfe5dce12d0d9c9306ede01d5daf3a45ebab488 100644
--- a/src/t_regression.c
+++ b/src/t_regression.c
@@ -118,6 +118,26 @@ static void test_llk_zero_end(void) {
     g_check_parse_failed(aze, be, "a", 1);
 }
 
+HParser *k_test_wrong_bit_length(HAllocator *mm__, const HParsedToken *tok, void *env)
+{
+    return h_ch__m(mm__, 'b');
+}
+
+static void test_wrong_bit_length(void) {
+    HParseResult *r;
+    HParser *p;
+
+    p = h_right(h_ch('a'), h_ch('b'));
+    r = h_parse(p, (const uint8_t *)"ab", 2);
+    g_check_cmp_int64(r->bit_length, ==, 16);
+    h_parse_result_free(r);
+
+    p = h_bind(h_ch('a'), k_test_wrong_bit_length, NULL);
+    r = h_parse(p, (const uint8_t *)"ab", 2);
+    g_check_cmp_int64(r->bit_length, ==, 16);
+    h_parse_result_free(r);
+}
+
 static void test_lalr_charset_lhs(void) {
     HParserBackend be = PB_LALR;
 
@@ -178,6 +198,7 @@ void register_regression_tests(void) {
   g_test_add_func("/core/regression/seq_index_path", test_seq_index_path);
   g_test_add_func("/core/regression/read_bits_48", test_read_bits_48);
   g_test_add_func("/core/regression/llk_zero_end", test_llk_zero_end);
+  g_test_add_func("/core/regression/wrong_bit_length", test_wrong_bit_length);
   g_test_add_func("/core/regression/lalr_charset_lhs", test_lalr_charset_lhs);
   g_test_add_func("/core/regression/cfg_many_seq", test_cfg_many_seq);
   g_test_add_func("/core/regression/charset_bits", test_charset_bits);