diff --git a/e2fsprogs/fsck.c b/e2fsprogs/fsck.c
index ae4e3d0..7f7ab3e 100644
--- a/e2fsprogs/fsck.c
+++ b/e2fsprogs/fsck.c
@@ -1006,11 +1006,11 @@
 	if (!fs_match(fs, &fs_type_compiled)) return 1;
 
 	/* Are we ignoring this type? */
-	if(compare_string_array(ignored_types, fs->type))
+	if(compare_string_array(ignored_types, fs->type) >= 0)
 		return 1;
 
 	/* Do we really really want to check this fs? */
-	wanted = compare_string_array(really_wanted, fs->type);
+	wanted = compare_string_array(really_wanted, fs->type) >= 0;
 
 	/* See if the <fsck.fs> program is available. */
 	s = find_fsck(fs->type);
diff --git a/include/libbb.h b/include/libbb.h
index 70a9336..d1c6be6 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -466,7 +466,7 @@
 } procps_status_t;
 
 extern procps_status_t * procps_scan(int save_user_arg0);
-extern unsigned short compare_string_array(const char * const string_array[], const char *key);
+extern int compare_string_array(const char * const string_array[], const char *key);
 
 extern int my_query_module(const char *name, int which, void **buf, size_t *bufsize, size_t *ret);
 
diff --git a/libbb/compare_string_array.c b/libbb/compare_string_array.c
index 8961e00..fc077b3 100644
--- a/libbb/compare_string_array.c
+++ b/libbb/compare_string_array.c
@@ -17,16 +17,16 @@
 #include <string.h>
 
 /* returns the array number of the string */
-extern unsigned short 
+extern int 
 compare_string_array(const char * const string_array[], const char *key)
 {
-	unsigned short i;
+	int i;
 
 	for (i = 0; string_array[i] != 0; i++) {
 		if (strcmp(string_array[i], key) == 0) {
-			break;
+			return i;
 		}
 	}
-	return(i);
+	return -i;
 }
 
