Index: sliceobject.c =================================================================== --- sliceobject.c (revision 63787) +++ sliceobject.c (working copy) @@ -169,7 +169,7 @@ else { if (!_PyEval_SliceIndex(r->stop, stop)) return -1; if (*stop < 0) *stop += length; - if (*stop < 0) *stop = -1; + if (*stop < 0) *stop = *step < 0 ? -1 : 0; if (*stop > length) *stop = length; }