diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 1b3d7fe971..4e52cd2b5d 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -210,6 +210,7 @@ $(dictionaryListEntry)/dictionaryListEntry.C
$(dictionaryListEntry)/dictionaryListEntryIO.C
functionEntries = $(dictionary)/functionEntries
+$(functionEntries)/negEntry/negEntry.C
$(functionEntries)/calcEntry/calcEntry.C
$(functionEntries)/codeStream/codeStream.C
$(functionEntries)/functionEntry/functionEntry.C
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/negEntry/negEntry.C b/src/OpenFOAM/db/dictionary/functionEntries/negEntry/negEntry.C
new file mode 100644
index 0000000000..698bb0be9a
--- /dev/null
+++ b/src/OpenFOAM/db/dictionary/functionEntries/negEntry/negEntry.C
@@ -0,0 +1,137 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2018 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 "negEntry.H"
+#include "addToMemberFunctionSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionEntries
+{
+ defineTypeNameAndDebug(negEntry, 0);
+
+ addToMemberFunctionSelectionTable
+ (
+ functionEntry,
+ negEntry,
+ execute,
+ dictionaryIstream
+ );
+
+ addToMemberFunctionSelectionTable
+ (
+ functionEntry,
+ negEntry,
+ execute,
+ primitiveEntryIstream
+ );
+}
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::string Foam::functionEntries::negEntry::negateVariable
+(
+ const dictionary& parentDict,
+ Istream& is
+)
+{
+ // Read variable name as a word including the '$'
+ const word varWord(is);
+
+ if (varWord[0] != '$')
+ {
+ FatalIOErrorInFunction
+ (
+ parentDict
+ ) << "Expected variable name beginning with a '$' but found '"
+ << varWord << "'" << exit(FatalIOError);
+
+ return string::null;
+ }
+
+ // Strip the leading '$' from the variable name
+ const string varName = varWord(1, varWord.size()-1);
+
+ // Lookup the variable name in the parent dictionary....
+ const entry* ePtr = parentDict.lookupScopedEntryPtr(varName, true, false);
+
+ if (ePtr && ePtr->isStream())
+ {
+ const token variable(ePtr->stream());
+
+ // Negate variable
+ OStringStream os(is.format());
+ os << '-' << variable;
+
+ return os.str();
+ }
+ else
+ {
+ FatalIOErrorInFunction
+ (
+ parentDict
+ ) << "Illegal dictionary variable name " << varName << endl
+ << "Valid dictionary entries are " << parentDict.toc()
+ << exit(FatalIOError);
+
+ return string::null;
+ }
+}
+
+
+bool Foam::functionEntries::negEntry::execute
+(
+ const dictionary& parentDict,
+ primitiveEntry& thisEntry,
+ Istream& is
+)
+{
+ // Reinsert negated variable into entry
+ IStringStream resultStream(negateVariable(parentDict, is));
+ thisEntry.read(parentDict, resultStream);
+
+ return true;
+}
+
+
+bool Foam::functionEntries::negEntry::execute
+(
+ dictionary& parentDict,
+ Istream& is
+)
+{
+ // Reinsert negated variable into dictionary
+ IStringStream resultStream(negateVariable(parentDict, is));
+ parentDict.read(resultStream);
+
+ return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/db/dictionary/functionEntries/negEntry/negEntry.H b/src/OpenFOAM/db/dictionary/functionEntries/negEntry/negEntry.H
new file mode 100644
index 0000000000..a0df3855ec
--- /dev/null
+++ b/src/OpenFOAM/db/dictionary/functionEntries/negEntry/negEntry.H
@@ -0,0 +1,115 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2018 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 .
+
+Class
+ Foam::functionEntries::negEntry
+
+Description
+ Negate a dictionary variable by prefixing with \c #neg
+
+ E.g.
+ \verbatim
+ Umean 5.75;
+ .
+ .
+ .
+ inlet
+ {
+ type uniformFixedValue;
+ uniformValue (#neg $Umean 0 0);
+ }
+ \endverbatim
+ Note the space required between the \c #neg and the '$'
+
+SourceFiles
+ negEntry.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef negEntry_H
+#define negEntry_H
+
+#include "functionEntry.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace functionEntries
+{
+
+/*---------------------------------------------------------------------------*\
+ Class negEntry Declaration
+\*---------------------------------------------------------------------------*/
+
+class negEntry
+:
+ public functionEntry
+{
+ // Private Member Functions
+
+ //- Lookup variable, negate and return as a string
+ static string negateVariable
+ (
+ const dictionary& parentDict,
+ Istream& is
+ );
+
+ //- Disallow default bitwise copy construct
+ negEntry(const negEntry&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const negEntry&);
+
+
+public:
+
+ //- Runtime type information
+ ClassName("neg");
+
+
+ // Member Functions
+
+ //- Execute the functionEntry in a sub-dict context
+ static bool execute(dictionary& parentDict, Istream&);
+
+ //- Execute the functionEntry in a primitiveEntry context
+ static bool execute
+ (
+ const dictionary& parentDict,
+ primitiveEntry&,
+ Istream&
+ );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace functionEntries
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //