diff --git a/Changes b/Changes
index 9ba81de..411b86a 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,6 @@
-0.55.8 2017-02-15
+0.55.8 2017-04-28
         - [feature] Retrieve and display pagebreaks (diewald)
+        - [bugfix] Handle invalid dates in input (diewald)
 
 0.55.7 2017-01-24
         - [bugfix] Sorted results in unordered element distance query results (margaretha)
diff --git a/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java b/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java
index 89e839a..e8730ed 100644
--- a/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java
+++ b/src/main/java/de/ids_mannheim/korap/index/FieldDocument.java
@@ -79,7 +79,8 @@
 
 
     public void addInt (String key, String value) {
-        this.addInt(key, Integer.parseInt(value));
+		if (value != null)
+			this.addInt(key, Integer.parseInt(value));
     };
 
 
@@ -284,7 +285,9 @@
     @Override
     public KrillDate setPubDate (String pubDate) {
         KrillDate date = super.setPubDate(pubDate);
-        this.addInt("pubDate", date.toString());
+		if (date != null) {
+			this.addInt("pubDate", date.toString());
+		};
         return date;
     };
 
@@ -293,7 +296,9 @@
     @Override
     public KrillDate setCreationDate (String creationDate) {
         KrillDate date = super.setCreationDate(creationDate);
-        this.addInt("creationDate", date.toString());
+		if (date != null) {
+			this.addInt("creationDate", date.toString());
+		};
         return date;
     };
 
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
index 2805e78..074fbae 100644
--- a/src/main/resources/log4j.properties
+++ b/src/main/resources/log4j.properties
@@ -1,4 +1,4 @@
-log4j.rootLogger = ERROR, stdout
+# log4j.rootLogger = ERROR, stdout
 
 # Queries:
 # log4j.logger.de.ids_mannheim.korap.query.SpanNextQuery = TRACE, stdout
@@ -32,6 +32,7 @@
 # log4j.logger.de.ids_mannheim.korap.response.Match = TRACE, stdout
 
 # Index:
+log4j.logger.de.ids_mannheim.korap.index.Indexer = INFO, stdout
 # log4j.logger.de.ids_mannheim.korap.KrillIndex = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.index.PositionsToOffset = TRACE, stdout
 # log4j.logger.de.ids_mannheim.korap.index.MultiTermTokenStream = TRACE, stdout
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
index 512535d..8f418ac 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestFieldDocument.java
@@ -206,6 +206,40 @@
     };
 
 
+    @Test
+    public void indexNoValidDate () throws Exception {
+
+        String json = new String("{" + "  \"fields\" : [" + "    { "
+                + "      \"primaryData\" : \"abc\"" + "    }," + "    {"
+                + "      \"name\" : \"tokens\"," + "      \"data\" : ["
+                + "         [ \"s:a\", \"i:a\", \"_0$<i>0<i>1\", \"-:t$<i>3\"],"
+                + "         [ \"s:b\", \"i:b\", \"_1$<i>1<i>2\" ],"
+                + "         [ \"s:c\", \"i:c\", \"_2$<i>2<i>3\" ]" + "      ]"
+                + "    }" + "  ]," + "  \"corpusID\"  : \"WPD\","
+                + "  \"ID\"        : \"WPD-AAA-00001\","
+                + "  \"textClass\" : \"music entertainment\","
+                + "  \"author\"    : \"Peter Frankenfeld\","
+                + "  \"pubDate\"   : \"00000000\","
+                + "  \"title\"     : \"Wikipedia\","
+                + "  \"subTitle\"  : \"Die freie Enzyklopädie\","
+                + "  \"pubPlace\"  : \"Bochum\"" + "}");
+
+        KrillIndex ki = new KrillIndex();
+        FieldDocument fd = ki.addDoc(json);
+
+        ki.commit();
+
+        assertEquals(fd.getPrimaryData(), "abc");
+        assertEquals(fd.getCorpusID(), "WPD");
+        assertEquals(fd.getID(), "WPD-AAA-00001");
+        assertEquals(fd.getTextClass(), "music entertainment");
+        assertEquals(fd.getAuthor(), "Peter Frankenfeld");
+        assertEquals(fd.getTitle(), "Wikipedia");
+        assertEquals(fd.getSubTitle(), "Die freie Enzyklopädie");
+        assertEquals(fd.getPubPlace(), "Bochum");
+        assertEquals(fd.getPubDate().toDisplay(), "");
+	};
+	
     public static String getString (String path) {
         StringBuilder contentBuilder = new StringBuilder();
         try {
