diff --git a/exprtkTools.hpp b/exprtkTools.hpp
index 18a4af7..c26a1b1 100644
--- a/exprtkTools.hpp
+++ b/exprtkTools.hpp
@@ -37,3 +37,35 @@
 
 /* include main exprtk header library */
 #include <exprtk.hpp>
+
+#include <cmath>
+#include <limits>
+#include <numeric>
+
+/* For floating types. (float, double, long double et al) */
+template <typename T>
+struct FuncMaxIgnoreNaN : public exprtk::ivararg_function<T>
+{
+    FuncMaxIgnoreNaN()
+    {
+        exprtk::set_min_num_args(*this, 2);
+        exprtk::set_max_num_args(*this, 255);
+    }
+
+    inline T operator()(const std::vector<T>& argList)
+    {
+        return std::reduce(std::begin(argList), std::end(argList),
+                           std::numeric_limits<double>::quiet_NaN(),
+                           [](auto a, auto b) {
+            if (std::isnan(b))
+            {
+                return a;
+            }
+            if (std::isnan(a))
+            {
+                return b;
+            }
+            return std::max(a, b);
+        });
+    }
+};
diff --git a/virtualSensor.cpp b/virtualSensor.cpp
index 7268156..2e58c3c 100644
--- a/virtualSensor.cpp
+++ b/virtualSensor.cpp
@@ -44,6 +44,8 @@
 namespace virtualSensor
 {
 
+FuncMaxIgnoreNaN<double> VirtualSensor::funcMaxIgnoreNaN;
+
 void printParams(const VirtualSensor::ParamMap& paramMap)
 {
     for (const auto& p : paramMap)
@@ -364,6 +366,8 @@
 
     symbols.add_constants();
     symbols.add_package(vecopsPackage);
+    symbols.add_function("maxIgnoreNaN", funcMaxIgnoreNaN);
+
     expression.register_symbol_table(symbols);
 
     /* parser from exprtk */
diff --git a/virtualSensor.hpp b/virtualSensor.hpp
index 8f17395..bce5116 100644
--- a/virtualSensor.hpp
+++ b/virtualSensor.hpp
@@ -169,6 +169,8 @@
     /** @brief The association interface object */
     std::unique_ptr<AssociationObject> associationIface;
 
+    static FuncMaxIgnoreNaN<double> funcMaxIgnoreNaN;
+
     /** @brief Read config from json object and initialize sensor data
      * for each virtual sensor
      */
