Index: lucene/src/test/org/apache/lucene/index/TestOmitTf.java
===================================================================
--- lucene/src/test/org/apache/lucene/index/TestOmitTf.java	(revision 1163204)
+++ lucene/src/test/org/apache/lucene/index/TestOmitTf.java	(working copy)
@@ -22,6 +22,7 @@
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TermContext;
+import org.apache.lucene.util._TestUtil;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
@@ -428,4 +429,26 @@
       return true;
     }
   }
+  
+  /** test that when freqs are omitted, that totalTermFreq and sumTotalTermFreq are -1 */
+  public void testStats() throws Exception {
+    Directory dir = newDirectory();
+    RandomIndexWriter iw = new RandomIndexWriter(random, dir,
+        newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random))
+        /* .setCodecProvider(_TestUtil.alwaysCodec("Memory")) */);
+    Document doc = new Document();
+    FieldType ft = new FieldType(TextField.TYPE_UNSTORED);
+    ft.setIndexOptions(IndexOptions.DOCS_ONLY);
+    ft.freeze();
+    Field f = newField("foo", "bar", ft);
+    doc.add(f);
+    iw.addDocument(doc);
+    IndexReader ir = iw.getReader();
+    iw.close();
+    Terms terms = MultiFields.getTerms(ir, "foo");
+    assertEquals(-1, terms.totalTermFreq(new BytesRef("bar")));
+    assertEquals(-1, terms.getSumTotalTermFreq());
+    ir.close();
+    dir.close();
+  }
 }
Index: lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryCodec.java
===================================================================
--- lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryCodec.java	(revision 1163204)
+++ lucene/src/java/org/apache/lucene/index/codecs/memory/MemoryCodec.java	(working copy)
@@ -554,7 +554,7 @@
         if (field.indexOptions != IndexOptions.DOCS_ONLY) {
           totalTermFreq = docFreq + buffer.readVLong();
         } else {
-          totalTermFreq = 0;
+          totalTermFreq = -1;
         }
         current.output.offset = buffer.getPosition();
         if (VERBOSE) System.out.println("  df=" + docFreq + " totTF=" + totalTermFreq + " offset=" + buffer.getPosition() + " len=" + current.output.length);
@@ -692,7 +692,7 @@
       if (field.indexOptions != IndexOptions.DOCS_ONLY) {
         sumTotalTermFreq = in.readVLong();
       } else {
-        sumTotalTermFreq = 0;
+        sumTotalTermFreq = -1;
       }
       sumDocFreq = in.readVLong();
       
