diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index c270d47..88c83fc 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -475,7 +475,7 @@
         }
         return new SuggestedWordInfo(sb.toString(), wordInfo.mScore, wordInfo.mKind,
                 wordInfo.mSourceDict, wordInfo.mIndexOfTouchPointOfSecondWord,
-                SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */);
+                wordInfo.mAutoCommitFirstWordConfidence);
     }
 
     public void close() {
diff --git a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
index a594baf..3753520 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
@@ -25,6 +25,7 @@
 
 import java.util.ArrayList;
 import java.util.Locale;
+import java.util.Random;
 
 @SmallTest
 public class SuggestedWordsTests extends AndroidTestCase {
@@ -72,15 +73,20 @@
         return new SuggestedWordInfo(s, 100,
                 SuggestedWordInfo.KIND_TYPED, null /* sourceDict */,
                 SuggestedWordInfo.NOT_AN_INDEX /* indexOfTouchPointOfSecondWord */,
-                SuggestedWordInfo.NOT_A_CONFIDENCE /* autoCommitFirstWordConfidence */);
+                new Random().nextInt(1000000) /* autoCommitFirstWordConfidence */);
     }
 
     // Helper for testGetTransformedWordInfo
     private SuggestedWordInfo transformWordInfo(final String info,
             final int trailingSingleQuotesCount) {
-        return Suggest.getTransformedSuggestedWordInfo(createWordInfo(info),
+        final SuggestedWordInfo suggestedWordInfo = createWordInfo(info);
+        final SuggestedWordInfo returnedWordInfo =
+                Suggest.getTransformedSuggestedWordInfo(suggestedWordInfo,
                 Locale.ENGLISH, false /* isAllUpperCase */, false /* isFirstCharCapitalized */,
                 trailingSingleQuotesCount);
+        assertEquals(suggestedWordInfo.mAutoCommitFirstWordConfidence,
+                returnedWordInfo.mAutoCommitFirstWordConfidence);
+        return returnedWordInfo;
     }
 
     public void testGetTransformedSuggestedWordInfo() {
