diff --git a/core/strings/strings-tests.factor b/core/strings/strings-tests.factor
index 247bd8d007..bebdb32820 100644
--- a/core/strings/strings-tests.factor
+++ b/core/strings/strings-tests.factor
@@ -121,3 +121,5 @@ unit-test
         [ <string> clone resize-string first ] keep =
     ] all-integers?
 ] unit-test
+
+[ HEX: 7fffff ] [ { -1 } >string first ] unit-test
diff --git a/core/strings/strings.factor b/core/strings/strings.factor
index f356d2a877..e57edf282a 100644
--- a/core/strings/strings.factor
+++ b/core/strings/strings.factor
@@ -19,7 +19,8 @@ IN: strings
 : (aux) ( n string -- byte-array m )
     aux>> { byte-array } declare swap 1 fixnum-shift-fast ; inline
 
-: small-char? ( ch -- ? ) HEX: 7f fixnum<= ; inline
+: small-char? ( ch -- ? )
+    dup 0 fixnum>= [ HEX: 7f fixnum<= ] [ drop f ] if ; inline
 
 : string-nth ( n string -- ch )
     2dup string-nth-fast dup small-char?