diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C
index 0785b8f9b60e6d157c0540f52e5e72943baad564..5ff3f56a81353a859098b66b9c011379d3c63445 100644
--- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C
+++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.C
@@ -98,7 +98,7 @@ Foam::autoPtr<Foam::OFstream> Foam::functionObjects::writeFile::newFile
 
         mkDir(outputDir);
 
-        osPtr.reset(new OFstream(outputDir/(fName.name() + ".dat")));
+        osPtr.reset(new OFstream(outputDir/(fName.name() + ext_)));
 
         if (!osPtr->good())
         {
@@ -137,13 +137,13 @@ Foam::autoPtr<Foam::OFstream> Foam::functionObjects::writeFile::newFileAtTime
         word fName(name);
 
         // Check if file already exists
-        IFstream is(outputDir/(fName + ".dat"));
+        IFstream is(outputDir/(fName + ext_));
         if (is.good())
         {
             fName = fName + "_" + timeName;
         }
 
-        osPtr.reset(new OFstream(outputDir/(fName + ".dat")));
+        osPtr.reset(new OFstream(outputDir/(fName + ext_)));
 
         if (!osPtr->good())
         {
@@ -198,7 +198,8 @@ Foam::functionObjects::writeFile::writeFile(const writeFile& wf)
     updateHeader_(wf.updateHeader_),
     writtenHeader_(wf.writtenHeader_),
     useUserTime_(wf.useUserTime_),
-    startTime_(wf.startTime_)
+    startTime_(wf.startTime_),
+    ext_(wf.ext_)
 {}
 
 
@@ -207,7 +208,8 @@ Foam::functionObjects::writeFile::writeFile
     const objectRegistry& obr,
     const fileName& prefix,
     const word& name,
-    const bool writeToFile
+    const bool writeToFile,
+    const string& ext
 )
 :
     fileObr_(obr),
@@ -219,7 +221,8 @@ Foam::functionObjects::writeFile::writeFile
     updateHeader_(true),
     writtenHeader_(false),
     useUserTime_(true),
-    startTime_(obr.time().startTime().value())
+    startTime_(obr.time().startTime().value()),
+    ext_(ext)
 {}
 
 
@@ -229,17 +232,13 @@ Foam::functionObjects::writeFile::writeFile
     const fileName& prefix,
     const word& name,
     const dictionary& dict,
-    const bool writeToFile
+    const bool writeToFile,
+    const string& ext
 )
 :
-    writeFile(obr, prefix, name, writeToFile)
+    writeFile(obr, prefix, name, writeToFile, ext)
 {
     read(dict);
-
-    if (writeToFile_)
-    {
-        filePtr_ = newFileAtStartTime(fileName_);
-    }
 }
 
 
@@ -268,6 +267,13 @@ bool Foam::functionObjects::writeFile::read(const dictionary& dict)
 }
 
 
+const Foam::string& Foam::functionObjects::writeFile::setExt(const string& ext)
+{
+    ext_ = ext;
+    return ext_;
+}
+
+
 Foam::OFstream& Foam::functionObjects::writeFile::file()
 {
     if (!writeToFile_)
@@ -275,10 +281,9 @@ Foam::OFstream& Foam::functionObjects::writeFile::file()
         return Snull;
     }
 
-    if (!filePtr_)
+    if (!filePtr_ && writeToFile_)
     {
-        FatalErrorInFunction
-            << "File pointer not allocated\n";
+        filePtr_ = newFileAtStartTime(fileName_);
     }
 
     return *filePtr_;
diff --git a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H
index 0fee04364f834dbbdbfb0301231f469a012fe4a4..307ae3f2ea8875a63d430457de61c61a34f79543 100644
--- a/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H
+++ b/src/OpenFOAM/db/functionObjects/writeFile/writeFile.H
@@ -122,6 +122,9 @@ protected:
         //- Start time value
         scalar startTime_;
 
+        //- File extension; default = .dat
+        string ext_;
+
 
     // Protected Member Functions
 
@@ -208,7 +211,8 @@ public:
             const objectRegistry& obr,
             const fileName& prefix,
             const word& name = "undefined",
-            const bool writeToFile = true
+            const bool writeToFile = true,
+            const string& ext = ".dat"
         );
 
         //- Construct from objectRegistry, prefix, fileName
@@ -219,7 +223,8 @@ public:
             const fileName& prefix,
             const word& name,
             const dictionary& dict,
-            const bool writeToFile = true
+            const bool writeToFile = true,
+            const string& ext = ".dat"
         );
 
         //- Construct copy
@@ -235,6 +240,9 @@ public:
         //- Read
         virtual bool read(const dictionary& dict);
 
+        //- Set extension
+        virtual const string& setExt(const string& ext);
+
         //- Return access to the file (if only 1)
         virtual OFstream& file();