diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index b3ac3c6..dbf201e 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1011,13 +1011,13 @@
 
 	if (gettuplesize(args) <= 1) {
 		if (!newgetargs(args,
-				"i;range() requires 1-3 int arguments",
+				"l;range() requires 1-3 int arguments",
 				&ihigh))
 			return NULL;
 	}
 	else {
 		if (!newgetargs(args,
-				"ii|i;range() requires 1-3 int arguments",
+				"ll|l;range() requires 1-3 int arguments",
 				&ilow, &ihigh, &istep))
 			return NULL;
 	}
@@ -1053,18 +1053,18 @@
 	object *args;
 {
 	long ilow = 0, ihigh = 0, istep = 1;
-	int n;
+	long n;
 	object *v;
 
 	if (gettuplesize(args) <= 1) {
 		if (!newgetargs(args,
-				"i;xrange() requires 1-3 int arguments",
+				"l;xrange() requires 1-3 int arguments",
 				&ihigh))
 			return NULL;
 	}
 	else {
 		if (!newgetargs(args,
-				"ii|i;xrange() requires 1-3 int arguments",
+				"ll|l;xrange() requires 1-3 int arguments",
 				&ilow, &ihigh, &istep))
 			return NULL;
 	}
@@ -1382,9 +1382,16 @@
 	{NULL,		NULL},
 };
 
+static object *builtin_mod;
 static object *builtin_dict;
 
 object *
+getbuiltinmod()
+{
+	return builtin_mod;
+}
+
+object *
 getbuiltindict()
 {
 	return builtin_dict;
@@ -1449,9 +1456,8 @@
 void
 initbuiltin()
 {
-	object *m;
-	m = initmodule("__builtin__", builtin_methods);
-	builtin_dict = getmoduledict(m);
+	builtin_mod = initmodule("__builtin__", builtin_methods);
+	builtin_dict = getmoduledict(builtin_mod);
 	INCREF(builtin_dict);
 	initerrors();
 	(void) dictinsert(builtin_dict, "None", None);
