diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 3a941a8..477d14d 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -79,7 +79,6 @@
 {
 	int len, n, i, j;
 	char *s, *sub;
-	char c;
 	object *list, *item;
 
 	if (!getargs(args, "(s#s#)", &s, &len, &sub, &n))
@@ -189,6 +188,8 @@
 	int len, n, i;
 
 	if (getargs(args, "(s#s#i)", &s, &len, &sub, &n, &i)) {
+		if (i < 0)
+			i += len;
 		if (i < 0 || i+n > len) {
 			err_setstr(ValueError, "start offset out of range");
 			return NULL;
@@ -205,12 +206,46 @@
 		return newintobject((long)i);
 
 	len -= n;
-	for (; i <= len; i++) {
-		if (s[i] == sub[0]) {
-			if (n == 1 || strncmp(s+i, sub, n) == 0)
-				return newintobject((long)i);
+	for (; i <= len; ++i)
+		if (s[i] == sub[0] &&
+		    (n == 1 || strncmp(&s[i+1], &sub[1], n-1) == 0))
+			return newintobject((long)i);
+
+	err_setstr(ValueError, "substring not found");
+	return NULL;
+}
+
+
+static object *
+strop_rindex(self, args)
+	object *self; /* Not used */
+	object *args;
+{
+	char *s, *sub;
+	int len, n, i;
+
+	if (getargs(args, "(s#s#i)", &s, &len, &sub, &n, &i)) {
+		if (i < 0)
+			i += len;
+		if (i < 0 || i+n > len) {
+			err_setstr(ValueError, "start offset out of range");
+			return NULL;
 		}
 	}
+	else {
+		err_clear();
+		if (!getargs(args, "(s#s#)", &s, &len, &sub, &n))
+			return NULL;
+		i = len;
+	}
+
+	if (n == 0)
+		return newintobject((long)i);
+
+	for (i -= n; i >= 0; --i)
+		if (s[i] == sub[0] &&
+		    (n == 1 || strncmp(&s[i+1], &sub[1], n-1) == 0))
+			return newintobject((long)i);
 
 	err_setstr(ValueError, "substring not found");
 	return NULL;
@@ -365,6 +400,7 @@
 	{"index",	strop_index},
 	{"joinfields",	strop_joinfields},
 	{"lower",	strop_lower},
+	{"rindex",	strop_rindex},
 	{"split",	strop_split},
 	{"splitfields",	strop_splitfields},
 	{"strip",	strop_strip},
