Index: tika-parsers/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java
===================================================================
--- tika-parsers/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java	(revision 1199731)
+++ tika-parsers/src/test/java/org/apache/tika/parser/microsoft/POIContainerExtractionTest.java	(working copy)
@@ -16,8 +16,13 @@
  */
 package org.apache.tika.parser.microsoft;
 
+import java.io.File;
+import java.io.InputStream;
+
 import org.apache.tika.extractor.ContainerExtractor;
 import org.apache.tika.extractor.ParserContainerExtractor;
+import org.apache.tika.io.TikaInputStream;
+import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
 
 /**
@@ -262,4 +267,13 @@
         assertTrue(handler.filenames.contains("Microsoft_Office_Excel_97-2003_Worksheet1.bin"));
         assertEquals(2, handler.filenames.size());
     }
+    
+    public void testWorks2000WordProcessorFile() throws Exception {
+        POIFSContainerDetector detector = new POIFSContainerDetector();
+        InputStream is = TikaInputStream.get(
+        		new File("src/test/resources/test-documents/microsoft-works-word-processor-2000.wps"));
+        Metadata metadata = new Metadata();
+        MediaType mt = detector.detect(is, metadata);
+        assertEquals(POIFSContainerDetector.WPS, mt);
+    }
 }
Index: tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java	(revision 1199731)
+++ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/POIFSContainerDetector.java	(working copy)
@@ -123,7 +123,7 @@
                 return PPT;
             } else if (names.contains("VisioDocument")) {
                 return VSD;
-            } else if (names.contains("CONTENTS") && names.contains("SPELLING")) {
+            } else if (names.contains("CONTENTS") && (names.contains("SPELLING") || names.contains("\u0001CompObj"))) {
                return WPS;
             } else if (names.contains("CONTENTS")) {
                // CONTENTS without SPELLING normally means some sort of
