Index: lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java
===================================================================
--- lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java	(révision 1439978)
+++ lucene/core/src/test/org/apache/lucene/search/TestTermVectors.java	(copie de travail)
@@ -30,8 +30,10 @@
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.*;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.TermsEnum.SeekStatus;
 import org.apache.lucene.search.similarities.DefaultSimilarity;
 import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.English;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
@@ -315,6 +317,17 @@
       assertTrue(freqInt != null);
       assertEquals(freqInt.intValue(), freq);
     }
+
+    assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(new BytesRef("colored")));
+    assertEquals((long) test4Map.get("colored"), termsEnum.totalTermFreq());
+    assertEquals(SeekStatus.END, termsEnum.seekCeil(new BytesRef("wizard")));
+    assertEquals(SeekStatus.FOUND, termsEnum.seekCeil(new BytesRef("chocolate")));
+    assertEquals((long) test4Map.get("chocolate"), termsEnum.totalTermFreq());
+    assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(new BytesRef("la")));
+    assertEquals(new BytesRef("lab"), termsEnum.term());
+    assertEquals(SeekStatus.NOT_FOUND, termsEnum.seekCeil(new BytesRef("")));
+    assertEquals(new BytesRef("a"), termsEnum.term());
+
     reader.close();
     dir.close();
   } 
Index: lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java	(révision 1439978)
+++ lucene/core/src/java/org/apache/lucene/codecs/compressing/CompressingTermVectorsReader.java	(copie de travail)
@@ -832,10 +832,18 @@
         }
       }
       // linear scan
-      do {
-        next();
-      } while (ord < numTerms - 1 && term().compareTo(text) < 0);
-      return term().equals(text) ? SeekStatus.FOUND : SeekStatus.END;
+      while (true) {
+        final BytesRef term = next();
+        if (term == null) {
+          return SeekStatus.END;
+        }
+        final int cmp = term.compareTo(text);
+        if (cmp > 0) {
+          return SeekStatus.NOT_FOUND;
+        } else if (cmp == 0) {
+          return SeekStatus.FOUND;
+        }
+      }
     }
 
     @Override
Index: lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java
===================================================================
--- lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java	(révision 1439978)
+++ lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40TermVectorsReader.java	(copie de travail)
@@ -422,7 +422,7 @@
       this.storePayloads = storePayloads;
       nextTerm = 0;
       tvf.seek(tvfFPStart);
-      tvfFP = 1+tvfFPStart;
+      tvfFP = tvfFPStart;
       positions = null;
       startOffsets = null;
       endOffsets = null;
