diff --git a/dictionary/src/dictionary.cpp b/dictionary/src/dictionary.cpp
index 02843abc23b98e3a8a6f8b2503480fbfce5c7e49..8db5f12e73f2cad9676af903dadd007a44d9ee68 100644
--- a/dictionary/src/dictionary.cpp
+++ b/dictionary/src/dictionary.cpp
@@ -147,16 +147,14 @@ Dictionary::addWord(unsigned short *word, int length, int frequency)
 }
 
 unsigned short
-Dictionary::toLowerCase(unsigned short c, const int depth) {
+Dictionary::toLowerCase(unsigned short c) {
     if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) {
         c = BASE_CHARS[c];
     }
-    if (depth == 0) {
-        if (c >='A' && c <= 'Z') {
-            c |= 32;
-        } else if (c > 127) {
-            c = u_tolower(c);
-        }
+    if (c >='A' && c <= 'Z') {
+        c |= 32;
+    } else if (c > 127) {
+        c = u_tolower(c);
     }
     return c;
 }
@@ -201,7 +199,7 @@ Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int s
 
     for (int i = 0; i < count; i++) {
         unsigned short c = getChar(&pos);
-        unsigned short lowerC = toLowerCase(c, depth);
+        unsigned short lowerC = toLowerCase(c);
         bool terminal = getTerminal(&pos);
         int childrenAddress = getAddress(&pos);
         int freq = 1;
diff --git a/dictionary/src/dictionary.h b/dictionary/src/dictionary.h
index 9173e39b0c7558f60bded0c5b7fb38d9ea1ebee4..8f195ca9a5f3e5fd80b639cc7ee388a1fdff1221 100644
--- a/dictionary/src/dictionary.h
+++ b/dictionary/src/dictionary.h
@@ -49,7 +49,7 @@ private:
 
     bool sameAsTyped(unsigned short *word, int length);
     bool addWord(unsigned short *word, int length, int frequency);
-    unsigned short toLowerCase(unsigned short c, int depth);
+    unsigned short toLowerCase(unsigned short c);
     void getWordsRec(int pos, int depth, int maxDepth, bool completion, int frequency,
             int inputIndex, int diffs);
     bool isValidWordRec(int pos, unsigned short *word, int offset, int length);
diff --git a/src/com/android/inputmethod/latin/ExpandableDictionary.java b/src/com/android/inputmethod/latin/ExpandableDictionary.java
index 3f20783e42a4a9758d43300b1a6a0d82a35d5cc2..c32796e57e5da3c7749d5a6209f5046e3116aeab 100644
--- a/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -250,7 +250,11 @@ public class ExpandableDictionary extends Dictionary {
         if (c < BASE_CHARS.length) {
             c = BASE_CHARS[c];
         }
-        c = Character.toLowerCase(c);
+        if (c >= 'A' && c <= 'Z') {
+            c = (char) (c | 32);
+        } else {
+            c = Character.toLowerCase(c);
+        }
         return c;
     }