Update limits for passing tests
diff --git a/include/bc.h b/include/bc.h
index 6960fb0..478f783 100644
--- a/include/bc.h
+++ b/include/bc.h
@@ -25,6 +25,7 @@
 
 #include <stdint.h>
 #include <stdlib.h>
+#include <limits.h>
 
 #define BC_FLAG_WARN (1<<0)
 #define BC_FLAG_STANDARD (1<<1)
@@ -39,10 +40,10 @@
 
 #define BC_INVALID_IDX ((size_t) -1)
 
-#define BC_BASE_MAX_DEF (99)
-#define BC_DIM_MAX_DEF (2048)
-#define BC_SCALE_MAX_DEF (99)
-#define BC_STRING_MAX_DEF (1024)
+#define BC_BASE_MAX_DEF (999)
+#define BC_DIM_MAX_DEF (INT_MAX)
+#define BC_SCALE_MAX_DEF (LONG_MAX)
+#define BC_STRING_MAX_DEF (INT_MAX)
 
 typedef enum BcStatus {
 
diff --git a/src/bc/program.c b/src/bc/program.c
index 5f5de2a..7f48b29 100644
--- a/src/bc/program.c
+++ b/src/bc/program.c
@@ -1307,6 +1307,7 @@
     p->base_max = BC_BASE_MAX_DEF;
   }
   else if (p->base_max > BC_BASE_MAX_DEF) return BC_STATUS_INVALID_LIMIT;
+  else p->base_max = BC_BASE_MAX_DEF;
 #endif
 
 #ifdef _POSIX_BC_DIM_MAX
@@ -1322,6 +1323,7 @@
     p->dim_max = BC_DIM_MAX_DEF;
   }
   else if (p->dim_max > BC_DIM_MAX_DEF) return BC_STATUS_INVALID_LIMIT;
+  else p->dim_max = BC_DIM_MAX_DEF;
 #endif
 
 #ifdef _POSIX_BC_SCALE_MAX
@@ -1337,6 +1339,7 @@
     p->scale_max = BC_SCALE_MAX_DEF;
   }
   else if (p->scale_max > BC_SCALE_MAX_DEF) return BC_STATUS_INVALID_LIMIT;
+  else p->scale_max = BC_SCALE_MAX_DEF;
 #endif
 
 #ifdef _POSIX_BC_STRING_MAX
@@ -1352,6 +1355,7 @@
     p->string_max = BC_STRING_MAX_DEF;
   }
   else if (p->string_max > BC_STRING_MAX_DEF) return BC_STATUS_INVALID_LIMIT;
+  else p->string_max = BC_STRING_MAX_DEF;
 #endif
 
   p->scale = 0;
@@ -1561,7 +1565,7 @@
   printf("BC_SCALE_MAX    = %ld\n", p->scale_max);
   printf("BC_STRING_MAX   = %ld\n", p->string_max);
   printf("Max Exponent    = %ld\n", LONG_MAX);
-  printf("Number of Vars  = %u\n", UINT32_MAX);
+  printf("Number of Vars  = %zu\n", SIZE_MAX);
 
   putchar('\n');
 }