diff --git a/src/parsers/int_range.c b/src/parsers/int_range.c
index 49b064218b507ca13d90dcc2ec654c8ae3a9ee19..0e2606515eae6c36c311e172155237f460e8eab0 100644
--- a/src/parsers/int_range.c
+++ b/src/parsers/int_range.c
@@ -5,6 +5,7 @@ typedef struct {
   const HParser *p;
   int64_t lower;
   int64_t upper;
+  uint8_t signedp;
 } HRange;
 
 static HParseResult* parse_int_range(void *env, HParseState *state) {
@@ -28,11 +29,13 @@ static HParseResult* parse_int_range(void *env, HParseState *state) {
   }
 }
 
-void gen_int_range(HAllocator *mm__, HCFStack *stk__, uint64_t low, uint64_t high, uint8_t bytes) {
-  /* Possible FIXME: TallerThanMe */
+void gen_int_range(HAllocator *mm__, HCFStack *stk__, int64_t low, int64_t high, int8_t bytes) {
+    /* Possible FIXME: TallerThanMe */
   if (1 == bytes) {
+    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX low = %ld, high=%ld\n", low, high);
     HCharset cs = new_charset(mm__);
-    for (uint64_t i=low; i<=high; ++i) {
+    for (int64_t i=low; i<=high; ++i) {
+      printf("CHAR SET WITH %ld\n", i);
       charset_set(cs, i, 1);
     }
     HCFS_ADD_CHARSET(cs);
@@ -87,6 +90,8 @@ static void desugar_int_range(HAllocator *mm__, HCFStack *stk__, void *env) {
   HRange *r = (HRange*)env;
   struct bits_env* be = (struct bits_env*)r->p->env;
   uint8_t bytes = be->length / 8;
+  printf("signedness of desired range: %d\n", r->signedp);
+
   gen_int_range(mm__, stk__, r->lower, r->upper, bytes);
 }
 
@@ -133,7 +138,13 @@ HParser* h_int_range__m(HAllocator* mm__, const HParser *p, const int64_t lower,
 
   HRange *r_env = h_new(HRange, 1);
   r_env->p = p;
+
+  struct bits_env *underlying_env = (p->env);
+  printf("signedness of underlying parser: %d\n", underlying_env->signedp);
+  r_env->signedp = underlying_env->signedp;
   r_env->lower = lower;
   r_env->upper = upper;
+  printf("range setup low = %ld, high=%ld\n", lower, upper);
+
   return h_new_parser(mm__, &int_range_vt, r_env);
 }