--- a/src/rcldb/rcldb.cpp
+++ b/src/rcldb/rcldb.cpp
@@ -1,5 +1,5 @@
 #ifndef lint
-static char rcsid[] = "@(#$Id: rcldb.cpp,v 1.31 2005-10-20 11:33:49 dockes Exp $ (C) 2004 J.F.Dockes";
+static char rcsid[] = "@(#$Id: rcldb.cpp,v 1.32 2005-11-05 14:40:50 dockes Exp $ (C) 2004 J.F.Dockes";
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
@@ -338,7 +338,9 @@
     // - mime type 
     string record = "url=file://" + fn;
     record += "\nmtype=" + doc.mimetype;
-    record += "\nmtime=" + doc.mtime;
+    record += "\nfmtime=" + doc.fmtime;
+    if (!doc.dmtime.empty())
+	record += "\ndmtime=" + doc.dmtime;
     record += "\norigcharset=" + doc.origcharset;
     record += "\ncaption=" + doc.title;
     record += "\nkeywords=" + doc.keywords;
@@ -351,7 +353,8 @@
     LOGDEB1(("Newdocument data: %s\n", record.c_str()));
     newdocument.set_data(record);
 
-    time_t mtime = atol(doc.mtime.c_str());
+    time_t mtime = atol(doc.dmtime.empty() ? doc.fmtime.c_str() : 
+			doc.dmtime.c_str());
     struct tm *tm = localtime(&mtime);
     char buf[9];
     sprintf(buf, "%04d%02d%02d",tm->tm_year+1900, tm->tm_mon + 1, tm->tm_mday);
@@ -399,8 +402,9 @@
 	return true;
     }
 
-    // Look for all documents with this path. Check the update time (once). 
-    // If the db is up to date, set the update flags for all documents
+    // Look for all documents with this path. We need to look at all
+    // to set their existence flag.
+    // We check the update time on the spe
     Xapian::PostingIterator doc;
     try {
 	Xapian::PostingIterator docid0 = ndb->wdb.postlist_begin(pathterm);
@@ -409,14 +413,23 @@
 
 	    Xapian::Document doc = ndb->wdb.get_document(*docid);
 
-	    // Check the date once. no need to look at the others if the
-	    // db needs updating.
+	    // Check the date once. no need to look at the others if
+	    // the db needs updating. Note that the fmtime used to be
+	    // called mtime, and we're keeping compat
 	    if (docid == docid0) {
 		string data = doc.get_data();
-		const char *cp = strstr(data.c_str(), "mtime=");
-		cp += 6;
-		long mtime = atol(cp);
+		const char *cp = strstr(data.c_str(), "fmtime=");
+		if (cp) {
+		    cp += 7;
+		} else {
+		    cp = strstr(data.c_str(), "mtime=");
+		    if (cp)
+			cp+= 6;
+		}
+		long mtime = cp ? atol(cp) : 0;
 		if (mtime < stp->st_mtime) {
+		    LOGDEB2(("Need update: Db Doc mtime %ld file mtime %ld\n", 
+			     (long)mtime, (long)stp->st_mtime));
 		    // Db is not up to date. Let's index the file
 		    return true;
 		} 
@@ -1027,7 +1040,8 @@
     ConfSimple parms(&data);
     parms.get(string("url"), doc.url);
     parms.get(string("mtype"), doc.mimetype);
-    parms.get(string("mtime"), doc.mtime);
+    parms.get(string("fmtime"), doc.fmtime);
+    parms.get(string("dmtime"), doc.dmtime);
     parms.get(string("origcharset"), doc.origcharset);
     parms.get(string("caption"), doc.title);
     parms.get(string("keywords"), doc.keywords);