diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index f4a4960..7da2035 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -114,6 +114,15 @@
         // TODO: toLowerCase in the native code
         final int[] prevWordCodePointArray = (null == prevWord)
                 ? null : StringUtils.toCodePointArray(prevWord.toString());
+        final int composerSize = composer.size();
+
+        if (composerSize <= 1 || !composer.isBatchMode()) {
+            if (composerSize > MAX_WORD_LENGTH - 1) return null;
+            for (int i = 0; i < composerSize; i++) {
+                mInputCodes[i] = composer.getCodeAt(i);
+            }
+        }
+
         final int count;
         if (composer.size() <= 1) {
             count = TextUtils.isEmpty(prevWord) ? -1 : getBigramsInternal(composer,
@@ -142,9 +151,6 @@
     private int getBigramsInternal(final WordComposer codes,
             final int[] previousWord) {
         int codesSize = codes.size();
-        if (codesSize > 0) {
-            mInputCodes[0] = codes.getCodeAt(0);
-        }
 
         int count = getBigramsNative(mNativeDict, previousWord, previousWord.length, mInputCodes,
                 codesSize, mOutputChars, mOutputScores, MAX_WORD_LENGTH, MAX_BIGRAMS);
@@ -165,11 +171,6 @@
             codesSize = ips.getPointerSize();
         } else {
             codesSize = codes.size();
-            // Won't deal with really long words.
-            if (codesSize > MAX_WORD_LENGTH - 1) return -1;
-            for (int i = 0; i < codesSize; i++) {
-                mInputCodes[i] = codes.getCodeAt(i);
-            }
         }
 
         return getSuggestionsNative(mNativeDict, proximityInfo.getNativeProximityInfo(),
