diff --git a/bds/source/java/ch/systemsx/cisd/bds/Constants.java b/bds/source/java/ch/systemsx/cisd/bds/Constants.java
index c633937130f90e1707cd1557b99ba6e705f63d1c..ff63810174f1b30a5ed2101e78584c12042c124c 100644
--- a/bds/source/java/ch/systemsx/cisd/bds/Constants.java
+++ b/bds/source/java/ch/systemsx/cisd/bds/Constants.java
@@ -18,6 +18,7 @@ package ch.systemsx.cisd.bds;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.concurrent.atomic.AtomicReference;
 
 /**
  * Some constants used inside the <i>BDS</i> library
@@ -34,7 +35,8 @@ public final class Constants
     public final static char PATH_SEPARATOR = '/';
 
     /** The uniformly date format used. */
-    public static final DateFormat DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT_PATTERN);
+    public static final AtomicReference<DateFormat> DATE_FORMAT =
+            new AtomicReference<DateFormat>(new SimpleDateFormat(DATE_FORMAT_PATTERN));
 
     private Constants()
     {
diff --git a/bds/source/java/ch/systemsx/cisd/bds/DataSet.java b/bds/source/java/ch/systemsx/cisd/bds/DataSet.java
index 3f1a09ec07039a6a56e9d92cc1d2fadd6519e932..7513902f7cf0edc7b8d188e36980e6b11d8ee835 100644
--- a/bds/source/java/ch/systemsx/cisd/bds/DataSet.java
+++ b/bds/source/java/ch/systemsx/cisd/bds/DataSet.java
@@ -22,7 +22,6 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
-
 import ch.systemsx.cisd.bds.exception.DataStructureException;
 import ch.systemsx.cisd.bds.storage.IDirectory;
 import ch.systemsx.cisd.common.collections.CollectionIO;
@@ -203,7 +202,7 @@ public final class DataSet implements IStorable
         folder.addKeyValuePair(CODE, code);
         folder.addKeyValuePair(PRODUCTION_TIMESTAMP,
                 productionTimestamp == null ? StringUtils.EMPTY_STRING : Constants.DATE_FORMAT
-                        .format(productionTimestamp));
+                        .get().format(productionTimestamp));
         folder.addKeyValuePair(PRODUCER_CODE, StringUtils.emptyIfNull(producerCode));
         folder.addKeyValuePair(IS_MEASURED, Boolean.toString(isMeasured).toUpperCase());
         folder.addKeyValuePair(OBSERVABLE_TYPE, observableTypeCode);
diff --git a/bds/source/java/ch/systemsx/cisd/bds/ExperimentRegistrationTimestamp.java b/bds/source/java/ch/systemsx/cisd/bds/ExperimentRegistrationTimestamp.java
index f722f1403e94f6dc5073cf6a4daac5109efdd371..6a026eaebb182adffa8a8359df173e28fed61ba2 100644
--- a/bds/source/java/ch/systemsx/cisd/bds/ExperimentRegistrationTimestamp.java
+++ b/bds/source/java/ch/systemsx/cisd/bds/ExperimentRegistrationTimestamp.java
@@ -61,7 +61,7 @@ public final class ExperimentRegistrationTimestamp implements IStorable
      */
     public final void saveTo(final IDirectory directory)
     {
-        directory.addKeyValuePair(FILE_NAME, Constants.DATE_FORMAT.format(date));
+        directory.addKeyValuePair(FILE_NAME, Constants.DATE_FORMAT.get().format(date));
     }
 
     //
@@ -91,7 +91,7 @@ public final class ExperimentRegistrationTimestamp implements IStorable
     @Override
     public final String toString()
     {
-        return Constants.DATE_FORMAT.format(date);
+        return Constants.DATE_FORMAT.get().format(date);
     }
 
 }
diff --git a/bds/source/java/ch/systemsx/cisd/bds/Utilities.java b/bds/source/java/ch/systemsx/cisd/bds/Utilities.java
index eead0e4fdfc990000103da9fa04f04aa24613603..7fa269292044b30b8df5cb474c17033e8b6db286 100644
--- a/bds/source/java/ch/systemsx/cisd/bds/Utilities.java
+++ b/bds/source/java/ch/systemsx/cisd/bds/Utilities.java
@@ -189,7 +189,7 @@ public class Utilities
         }
         try
         {
-            return Constants.DATE_FORMAT.parse(value);
+            return Constants.DATE_FORMAT.get().parse(value);
         } catch (final ParseException ex)
         {
             throw new DataStructureException("Value of '" + name + "' version file is not a date: "