diff --git a/src/OSspecific/POSIX/signals/sigFpe.C b/src/OSspecific/POSIX/signals/sigFpe.C
index 0f74e43a690293e8261d41765cda5395adbcb188..19861c86df7446262b307e5247de6000f9e5a8eb 100644
--- a/src/OSspecific/POSIX/signals/sigFpe.C
+++ b/src/OSspecific/POSIX/signals/sigFpe.C
@@ -45,6 +45,7 @@ License
 #endif
 
 #include <stdint.h>
+#include <limits>
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -53,26 +54,7 @@ struct sigaction Foam::sigFpe::oldAction_;
 
 void Foam::sigFpe::fillSignallingNan(UList<scalar>& lst)
 {
-#ifdef LINUX
-
-    // initialize to signalling NaN
-#   ifdef WM_SP
-
-    const uint32_t sNAN = 0x7ff7fffflu;
-    uint32_t* dPtr = reinterpret_cast<uint32_t*>(lst.begin());
-
-#   else
-
-    const uint64_t sNAN = 0x7ff7ffffffffffffllu;
-    uint64_t* dPtr = reinterpret_cast<uint64_t*>(lst.begin());
-
-#   endif
-
-    forAll(lst, i)
-    {
-        *dPtr++ = sNAN;
-    }
-#endif
+    lst = std::numeric_limits<scalar>::signaling_NaN();
 }