Handle really big steps in extended slices.

Fixes a test failure on 64 bit platforms (I hope).
diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c
index a035e5f..7198cca 100644
--- a/Objects/sliceobject.c
+++ b/Objects/sliceobject.c
@@ -121,11 +121,8 @@
 		*step = 1;
 	} 
 	else {
-		*step = PyInt_AsLong(r->step);
-		if (*step == -1 && PyErr_Occurred()) {
-			return -1;
-		}
-		else if (*step == 0) {
+		if (!_PyEval_SliceIndex(r->step, step)) return -1;
+		if (*step == 0) {
 			PyErr_SetString(PyExc_ValueError,
 					"slice step cannot be zero");
 			return -1;
diff --git a/Python/ceval.c b/Python/ceval.c
index afc480e..09b88a6 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3507,7 +3507,7 @@
 		if (x > INT_MAX)
 			x = INT_MAX;
 		else if (x < -INT_MAX)
-			x = 0;
+			x = -INT_MAX;
 		*pi = x;
 	}
 	return 1;