diff --git a/xs/GtkListStore.xs b/xs/GtkListStore.xs
index 74b5ae5..15d392b 100644
--- a/xs/GtkListStore.xs
+++ b/xs/GtkListStore.xs
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003 by the gtk2-perl team (see the file AUTHORS)
+ * Copyright (c) 2003, 2009 by the gtk2-perl team (see the file AUTHORS)
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -133,6 +133,10 @@ gtk_list_store_set (list_store, iter, col1, val1, ...)
 ### void gtk_list_store_set_value (GtkListStore *list_store, GtkTreeIter *iter, gint column, GValue *value)
 
 ## gboolean gtk_list_store_remove (GtkListStore *list_store, GtkTreeIter *iter)
+=for apidoc
+The return is always a boolean in the style of Gtk 2.2.x and up, even
+when running on Gtk 2.0.x.
+=cut
 gboolean
 gtk_list_store_remove (list_store, iter)
 	GtkListStore *list_store
@@ -141,11 +145,11 @@ gtk_list_store_remove (list_store, iter)
 #if GTK_CHECK_VERSION(2,2,0)
 	RETVAL = gtk_list_store_remove (list_store, iter);
 #else
-	/* void return in 2.0.x; always return FALSE from this function
-	 * in that case; FIXME the alternative is to implement the missing
-	 * functionality right here. */
+	/* void return in 2.0.x; look for stamp is zapped to 0 if no more
+	 * rows, to emulate the return value of 2.2 and up
+	 */
 	gtk_list_store_remove (list_store, iter);
-	RETVAL = FALSE;
+	RETVAL = (iter->stamp != 0);
 #endif
     OUTPUT:
 	RETVAL
