diff --git a/src/functionObjects/utilities/Make/files b/src/functionObjects/utilities/Make/files
index 4390ef6bf5..8a2d7f9e4b 100644
--- a/src/functionObjects/utilities/Make/files
+++ b/src/functionObjects/utilities/Make/files
@@ -17,6 +17,7 @@ runTimeControl/runTimeCondition/runTimeCondition/runTimeCondition.C
runTimeControl/runTimeCondition/runTimeCondition/runTimeConditionNew.C
runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C
runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C
+runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.C
runTimeControl/runTimeCondition/minMaxCondition/minMaxCondition.C
runTimeControl/runTimeCondition/averageCondition/averageCondition.C
runTimeControl/runTimeCondition/minTimeStepCondition/minTimeStepCondition.C
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.C
new file mode 100644
index 0000000000..86f955cb74
--- /dev/null
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.C
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "maxDurationCondition.H"
+#include "addToRunTimeSelectionTable.H"
+#include "Time.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+namespace runTimeControls
+{
+ defineTypeNameAndDebug(maxDurationCondition, 0);
+ addToRunTimeSelectionTable
+ (
+ runTimeCondition,
+ maxDurationCondition,
+ dictionary
+ );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::functionObjects::runTimeControls::maxDurationCondition::
+maxDurationCondition
+(
+ const word& name,
+ const objectRegistry& obr,
+ const dictionary& dict,
+ stateFunctionObject& state
+)
+:
+ runTimeCondition(name, obr, dict, state),
+ duration_(dict.get("duration")),
+ startTime_(-1),
+ initialised_(false),
+ resetOnRestart_(dict.lookupOrDefault("resetOnRestart", false))
+{
+ if
+ (
+ !resetOnRestart_
+ && conditionDict().readIfPresent("startTime", startTime_))
+ {
+ initialised_ = true;
+ }
+
+ duration_ = obr_.time().userTimeToTime(duration_);
+}
+
+
+// * * * * * * * * * * * * * * Public Member Functions * * * * * * * * * * * //
+
+bool Foam::functionObjects::runTimeControls::maxDurationCondition::apply()
+{
+ if (!active_)
+ {
+ return true;
+ }
+
+ if (!initialised_)
+ {
+ startTime_ = obr_.time().value();
+ initialised_ = true;
+ }
+
+ scalar delta = obr_.time().value() - startTime_;
+ delta = obr_.time().timeToUserTime(delta);
+
+ return delta >= duration_;
+}
+
+
+void Foam::functionObjects::runTimeControls::maxDurationCondition::write()
+{
+ if (initialised_)
+ {
+ conditionDict().set("startTime", startTime_);
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.H b/src/functionObjects/utilities/runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.H
new file mode 100644
index 0000000000..e508e9304d
--- /dev/null
+++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/maxDurationCondition/maxDurationCondition.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Class
+ Foam::functionObjects::runTimeControls::maxDurationCondition
+
+Description
+ Activated after a user-specified duration
+
+SourceFiles
+ maxDurationCondition.H
+ maxDurationCondition.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef functionObjects_runTimeConditions_maxDurationCondition_H
+#define functionObjects_runTimeConditions_maxDurationCondition_H
+
+#include "runTimeCondition.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionObjects
+{
+namespace runTimeControls
+{
+
+/*---------------------------------------------------------------------------*\
+ Class maxDurationCondition Declaration
+\*---------------------------------------------------------------------------*/
+
+class maxDurationCondition
+:
+ public runTimeCondition
+{
+protected:
+
+ // Protected data
+
+ //- Duration
+ scalar duration_;
+
+ //- Time when the condition is activated
+ scalar startTime_;
+
+ //- Initialisation flag
+ bool initialised_;
+
+ //- Reset on restart (ignores any state information)
+ Switch resetOnRestart_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("maxDuration");
+
+ //- Constructor
+ maxDurationCondition
+ (
+ const word& name,
+ const objectRegistry& obr,
+ const dictionary& dict,
+ stateFunctionObject& state
+ );
+
+ //- Destructor
+ virtual ~maxDurationCondition() = default;
+
+
+ // Public Member Functions
+
+ //- Apply the condition
+ virtual bool apply();
+
+ //- Write
+ virtual void write();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace runTimeControls
+} // End namespace functionObjects
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //