diff --git a/src/OpenFOAM/db/Time/Time.H b/src/OpenFOAM/db/Time/Time.H
index b57d7739466d3b603ba0e38ecc9fa56296b020d6..2d1fefe6dd0676107459fb94f464aa63ad656fd2 100644
--- a/src/OpenFOAM/db/Time/Time.H
+++ b/src/OpenFOAM/db/Time/Time.H
@@ -372,6 +372,9 @@ public:
                 const word& constantName = "constant"
             );
 
+            //- Write time dictionary to the <time>/uniform directory
+            virtual bool writeTimeDict() const;
+
             //- Write using given format, version and compression
             virtual bool writeObject
             (
diff --git a/src/OpenFOAM/db/Time/TimeIO.C b/src/OpenFOAM/db/Time/TimeIO.C
index 918bdd548a13f12c8fc542b361e86ee1d9b5ba88..436661040fa83bea0bc7db1b6ca7c0a723be6b97 100644
--- a/src/OpenFOAM/db/Time/TimeIO.C
+++ b/src/OpenFOAM/db/Time/TimeIO.C
@@ -410,6 +410,39 @@ void Foam::Time::readModifiedObjects()
 }
 
 
+bool Foam::Time::writeTimeDict() const
+{
+    const word tmName(timeName());
+
+    IOdictionary timeDict
+    (
+        IOobject
+        (
+            "time",
+            tmName,
+            "uniform",
+            *this,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            false
+        )
+    );
+
+    timeDict.add("value", timeName(timeToUserTime(value()), maxPrecision_));
+    timeDict.add("name", string(tmName));
+    timeDict.add("index", timeIndex_);
+    timeDict.add("deltaT", timeToUserTime(deltaT_));
+    timeDict.add("deltaT0", timeToUserTime(deltaT0_));
+
+    return timeDict.regIOobject::writeObject
+    (
+        IOstream::ASCII,
+        IOstream::currentVersion,
+        IOstream::UNCOMPRESSED
+    );
+}
+
+
 bool Foam::Time::writeObject
 (
     IOstream::streamFormat fmt,
@@ -419,37 +452,19 @@ bool Foam::Time::writeObject
 {
     if (writeTime())
     {
-        const word tmName(timeName());
-
-        IOdictionary timeDict
-        (
-            IOobject
-            (
-                "time",
-                tmName,
-                "uniform",
-                *this,
-                IOobject::NO_READ,
-                IOobject::NO_WRITE,
-                false
-            )
-        );
-
-        timeDict.add("value", timeName(timeToUserTime(value()), maxPrecision_));
-        timeDict.add("name", string(tmName));
-        timeDict.add("index", timeIndex_);
-        timeDict.add("deltaT", timeToUserTime(deltaT_));
-        timeDict.add("deltaT0", timeToUserTime(deltaT0_));
+        bool writeOK = writeTimeDict();
 
-        timeDict.regIOobject::writeObject(fmt, ver, cmp);
-        bool writeOK = objectRegistry::writeObject(fmt, ver, cmp);
+        if (writeOK)
+        {
+            writeOK = objectRegistry::writeObject(fmt, ver, cmp);
+        }
 
         if (writeOK)
         {
             // Does the writeTime trigger purging?
             if (writeTime_ && purgeWrite_)
             {
-                previousWriteTimes_.push(tmName);
+                previousWriteTimes_.push(timeName());
 
                 while (previousWriteTimes_.size() > purgeWrite_)
                 {
diff --git a/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C b/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C
index 0963320dbcfc1af4a84174c9263aaacdbe79ff7c..17dc699b4c088f77de32953d51220b23d161cbeb 100644
--- a/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C
+++ b/src/postProcessing/functionObjects/utilities/writeRegisteredObject/writeRegisteredObject.C
@@ -103,6 +103,11 @@ bool Foam::functionObjects::writeRegisteredObject::write
 {
     Info<< type() << " " << name() << " output:" << nl;
 
+    if (!obr_.time().writeTime())
+    {
+        obr_.time().writeTimeDict();
+    }
+
     DynamicList<word> allNames(obr_.toc().size());
     forAll(objectNames_, i)
     {