diff -Nuar bc-1.06/bc/bcdefs.h bc-1.06.works/bc/bcdefs.h
--- bc-1.06/bc/bcdefs.h	2000-09-13 11:23:20.000000000 -0700
+++ bc-1.06.works/bc/bcdefs.h	2005-06-24 23:37:35.000000000 -0700
@@ -100,8 +100,8 @@
 
 /* Code addresses. */
 typedef struct {
-      int pc_func;
-      int pc_addr;
+      long pc_func;
+      long pc_addr;
     } program_counter;
 
 
diff -Nuar bc-1.06/bc/load.c bc-1.06.works/bc/load.c
--- bc-1.06/bc/load.c	2000-09-13 11:22:38.000000000 -0700
+++ bc-1.06.works/bc/load.c	2005-06-24 23:41:20.000000000 -0700
@@ -54,7 +54,7 @@
 addbyte (byte)
      char byte;
 {
-  int pc;
+  long pc;
   bc_function *f;
   char *new_body;
 
@@ -87,7 +87,8 @@
      long lab;
 {
   bc_label_group *temp;
-  int group, offset, func;
+  int group, offset;
+  long func;
     
   /* Get things ready. */
   group = lab >> BC_LABEL_LOG;
@@ -245,8 +246,8 @@
 #if DEBUG > 2
 			printf ("var parameter number %d\n", ap_name);
 #endif
-			functions[(int)func].f_params = 
-			  nextarg (functions[(int)func].f_params, ap_name,
+			functions[(long)func].f_params = 
+			  nextarg (functions[(long)func].f_params, ap_name,
 				   TRUE);
 		      }
 		    else
@@ -255,8 +256,8 @@
 #if DEBUG > 2
 			printf ("parameter number %d\n", ap_name);
 #endif
-			functions[(int)func].f_params = 
-			  nextarg (functions[(int)func].f_params, ap_name,
+			functions[(long)func].f_params = 
+			  nextarg (functions[(long)func].f_params, ap_name,
 				   FALSE);
 		      }
 		  }
@@ -269,8 +270,8 @@
 #if DEBUG > 2
 		    printf ("auto number %d\n", ap_name);
 #endif
-		    functions[(int)func].f_autos = 
-		      nextarg (functions[(int)func].f_autos, ap_name, FALSE);
+		    functions[(long)func].f_autos = 
+		      nextarg (functions[(long)func].f_autos, ap_name, FALSE);
 		  }
 		save_adr = load_adr;
 		load_adr.pc_func = func;
