diff --git a/intl/icu/source/common/ustrcase.cpp b/intl/icu/source/common/ustrcase.cpp
--- a/intl/icu/source/common/ustrcase.cpp
+++ b/intl/icu/source/common/ustrcase.cpp
@@ -1713,9 +1713,11 @@
                      * remember that this simulates bulk text replacement:
                      * the decomposition would replace the entire code point
                      */
-                    --s2;
-                    --m2;
-                    c2=*(s2-1);
+                    if (start2<=(s2-2)) {
+                        --s2;
+                        --m2;
+                        c2=*(s2-1);
+                    }
                 }
             }
 
@@ -1759,9 +1761,11 @@
                      * remember that this simulates bulk text replacement:
                      * the decomposition would replace the entire code point
                      */
-                    --s1;
-                    --m2;
-                    c1=*(s1-1);
+                    if (start1<=(s1-2)) {
+                        --s1;
+                        --m1;
+                        c1=*(s1-1);
+                    }
                 }
             }
 
