diff --git a/applications/test/sigFpe/Make/files b/applications/test/sigFpe/Make/files
index f2c4215e4a538264c594e9924a3d25cd77e0d9a6..d9940651a11311100a2e5ac64737d4a85babb631 100644
--- a/applications/test/sigFpe/Make/files
+++ b/applications/test/sigFpe/Make/files
@@ -1,3 +1,3 @@
-Test-sigFpe.C
+Test-sigFpe.cxx
 
 EXE = $(FOAM_USER_APPBIN)/Test-sigFpe
diff --git a/applications/test/sigFpe/Test-sigFpe.C b/applications/test/sigFpe/Test-sigFpe.cxx
similarity index 100%
rename from applications/test/sigFpe/Test-sigFpe.C
rename to applications/test/sigFpe/Test-sigFpe.cxx
diff --git a/src/OSspecific/MSwindows/Make/files b/src/OSspecific/MSwindows/Make/files
index 964f34106e07b8b50f443ead9bfd90ef2d26df2b..7c0823f3fcee6c7bada9f3bd48ebd1e686594e07 100644
--- a/src/OSspecific/MSwindows/Make/files
+++ b/src/OSspecific/MSwindows/Make/files
@@ -3,13 +3,13 @@ MSwindows.C
 cpuInfo/cpuInfo.C
 memInfo/memInfo.C
 
-signals/sigFpe.C
-signals/sigInt.C
-signals/sigQuit.C
-signals/sigSegv.C
-signals/sigStopAtWriteNow.C
-signals/sigWriteNow.C
-signals/timer.C
+signals/sigFpe.cxx
+signals/sigInt.cxx
+signals/sigQuit.cxx
+signals/sigSegv.cxx
+signals/sigStopAtWriteNow.cxx
+signals/sigWriteNow.cxx
+signals/timer.cxx
 
 fileStat/fileStat.C
 
diff --git a/src/OSspecific/MSwindows/signals/sigFpe.H b/src/OSspecific/MSwindows/signals/sigFpe.H
index 98054224bc7585f9436d7023e6e4eddbbcbf6882..31f3b05b99f1755481616af9986e5d008a2121fd 100644
--- a/src/OSspecific/MSwindows/signals/sigFpe.H
+++ b/src/OSspecific/MSwindows/signals/sigFpe.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2018-2023 OpenCFD Ltd.
+    Copyright (C) 2018-2025 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -50,13 +50,15 @@ Description
     restores original). The class behaves as a singleton.
 
 SourceFiles
-    sigFpe.C
+    sigFpe.cxx
 
 \*---------------------------------------------------------------------------*/
 
 #ifndef Foam_sigFpe_H
 #define Foam_sigFpe_H
 
+#include <algorithm>
+#include <limits>
 #include <cstddef>  // For std::size_t
 #include "scalarFwd.H"
 
@@ -96,6 +98,23 @@ class sigFpe
         //- Handler for caught signals - ends job and prints stack
         static void sigHandler(int);
 
+        //- Fill (float | double) buffer with signalling NaN
+        template<class FloatType>
+        inline static void fill_with_NaN(FloatType* buf, size_t count)
+        {
+            if (buf && count)
+            {
+                const auto val =
+                    std::numeric_limits<FloatType>::signaling_NaN();
+
+                // [float|double] so do not need std::uninitialized_fill_n()
+                // Can dispatch with
+                // - std::execution::par_unseq
+                // - std::execution::unseq
+                std::fill_n(buf, count, val);
+            }
+        }
+
 
 public:
 
@@ -124,6 +143,15 @@ public:
         //- True if NaN memory initialisation is currently active.
         static bool nanActive() noexcept { return nanActive_; }
 
+        //- Set NaN memory initialisation on/off.
+        //  \return the previous value
+        static bool nanActive(bool on) noexcept
+        {
+            bool old(nanActive_);
+            nanActive_ = on;
+            return old;
+        }
+
         //- Activate SIGFPE handler when FOAM_SIGFPE is enabled.
         //- Activate fill memory with signaling_NaN when FOAM_SETNAN is enabled
         static void set(bool verbose=false);
@@ -131,11 +159,37 @@ public:
         //- Deactivate SIGFPE handler and NaN memory initialisation
         static void unset(bool verbose=false);
 
-        //- Fill data block with signaling_NaN values
-        static void fillNan(char* buf, size_t count);
 
-        //- Fill data block with signaling_NaN values
-        static void fillNan(UList<scalar>& list);
+        //- Fill data block with signaling_NaN values if nanActive().
+        //- Does a reinterpret to \c Foam::scalar
+        inline static void fillNan_if(void* buf, size_t count)
+        {
+            if (nanActive_)
+            {
+                fill_with_NaN
+                (
+                    reinterpret_cast<Foam::scalar*>(buf),
+                    (count/sizeof(Foam::scalar))
+                );
+            }
+        }
+
+        //- Fill data block with signaling_NaN values.
+        //- Does a reinterpret to \c Foam::scalar
+        static void fillNan(char* buf, size_t count)
+        {
+            fill_with_NaN
+            (
+                reinterpret_cast<Foam::scalar*>(buf),
+                (count/sizeof(Foam::scalar))
+            );
+        }
+
+        //- Fill data block with (float) signaling_NaN values
+        static void fillNan(UList<float>& list);
+
+        //- Fill data block with (double) signaling_NaN values
+        static void fillNan(UList<double>& list);
 
 
     // Helpers
diff --git a/src/OSspecific/MSwindows/signals/sigFpe.C b/src/OSspecific/MSwindows/signals/sigFpe.cxx
similarity index 85%
rename from src/OSspecific/MSwindows/signals/sigFpe.C
rename to src/OSspecific/MSwindows/signals/sigFpe.cxx
index 4be1a14ec1f56aa0c7b25ba3b6c62a90703df7b9..d38a8d5092368411aab22a82256d4ecb3165ded6 100644
--- a/src/OSspecific/MSwindows/signals/sigFpe.C
+++ b/src/OSspecific/MSwindows/signals/sigFpe.cxx
@@ -36,11 +36,9 @@ License
 #include "Switch.H"
 
 #include <float.h>  // For *fp functions
-#include <algorithm>
-#include <limits>
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -196,37 +194,15 @@ void Foam::sigFpe::unset(bool verbose)
 }
 
 
-void Foam::sigFpe::fillNan(char* buf, size_t count)
+void Foam::sigFpe::fillNan(UList<float>& list)
 {
-    if (!buf || !count) return;
-
-    // Fill with signaling_NaN
-    const scalar val = std::numeric_limits<scalar>::signaling_NaN();
-
-    // Can dispatch with
-    // - std::execution::parallel_unsequenced_policy
-    // - std::execution::unsequenced_policy
-    std::fill_n
-    (
-        reinterpret_cast<scalar*>(buf), (count/sizeof(scalar)), val
-    );
+    sigFpe::fill_with_NaN(list.data(), list.size());
 }
 
 
-void Foam::sigFpe::fillNan(UList<scalar>& list)
+void Foam::sigFpe::fillNan(UList<double>& list)
 {
-    if (list.empty()) return;
-
-    // Fill with signaling_NaN
-    const scalar val = std::numeric_limits<scalar>::signaling_NaN();
-
-    // Can dispatch with
-    // - std::execution::parallel_unsequenced_policy
-    // - std::execution::unsequenced_policy
-    std::fill_n
-    (
-        list.data(), list.size(), val
-    );
+    sigFpe::fill_with_NaN(list.data(), list.size());
 }
 
 
diff --git a/src/OSspecific/MSwindows/signals/sigInt.H b/src/OSspecific/MSwindows/signals/sigInt.H
index a51e7fff73738dfaae9b7faa90a5e59dee820659..39869cb4257b3bd09a1938b6630a970c767c9161 100644
--- a/src/OSspecific/MSwindows/signals/sigInt.H
+++ b/src/OSspecific/MSwindows/signals/sigInt.H
@@ -41,7 +41,7 @@ See also
     Foam::JobInfo
 
 SourceFiles
-    sigInt.C
+    sigInt.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/MSwindows/signals/sigInt.C b/src/OSspecific/MSwindows/signals/sigInt.cxx
similarity index 98%
rename from src/OSspecific/MSwindows/signals/sigInt.C
rename to src/OSspecific/MSwindows/signals/sigInt.cxx
index c4114968ba3631a094c8e9a4b4fa54a9f78dcaa0..c56e837892f68c0687d6e769d0d3ac0a878b188f 100644
--- a/src/OSspecific/MSwindows/signals/sigInt.C
+++ b/src/OSspecific/MSwindows/signals/sigInt.cxx
@@ -33,7 +33,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/MSwindows/signals/sigQuit.H b/src/OSspecific/MSwindows/signals/sigQuit.H
index 7525647bfb958a57e874d2b21ad830acf787eb72..a7a7de630f517734e30619cbb7583ead054810bd 100644
--- a/src/OSspecific/MSwindows/signals/sigQuit.H
+++ b/src/OSspecific/MSwindows/signals/sigQuit.H
@@ -40,7 +40,7 @@ See also
     Foam::JobInfo
 
 SourceFiles
-    sigQuit.C
+    sigQuit.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/MSwindows/signals/sigQuit.C b/src/OSspecific/MSwindows/signals/sigQuit.cxx
similarity index 98%
rename from src/OSspecific/MSwindows/signals/sigQuit.C
rename to src/OSspecific/MSwindows/signals/sigQuit.cxx
index cb33f036ae05756801943586d8d8710ace0ebd38..ea4d18805323f15035d0f5d872dd863cefab994b 100644
--- a/src/OSspecific/MSwindows/signals/sigQuit.C
+++ b/src/OSspecific/MSwindows/signals/sigQuit.cxx
@@ -33,7 +33,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 // NOTE: SIGBREAK is the best alternative to SIGQUIT on windows
 
diff --git a/src/OSspecific/MSwindows/signals/sigSegv.H b/src/OSspecific/MSwindows/signals/sigSegv.H
index 39a34f5da1d51207ed8c55c0296b467c14dd0ee3..a6e000e9d991847b5251584205a3735c9f7301fd 100644
--- a/src/OSspecific/MSwindows/signals/sigSegv.H
+++ b/src/OSspecific/MSwindows/signals/sigSegv.H
@@ -40,7 +40,7 @@ See also
     Foam::JobInfo
 
 SourceFiles
-    sigSegv.C
+    sigSegv.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/POSIX/signals/sigSegv.C b/src/OSspecific/MSwindows/signals/sigSegv.cxx
similarity index 98%
rename from src/OSspecific/POSIX/signals/sigSegv.C
rename to src/OSspecific/MSwindows/signals/sigSegv.cxx
index 9fe56674f499ba0bd0ed07ac59965d572630ea94..1c147c2e8362e7d0b5aa64e96c009f1ebb9404b2 100644
--- a/src/OSspecific/POSIX/signals/sigSegv.C
+++ b/src/OSspecific/MSwindows/signals/sigSegv.cxx
@@ -32,7 +32,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.H b/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.H
index 200e96f8b2808beaf4479423f3fec2d3719bc684..22f040764e75b09b85b74a7399371de9bad06a63 100644
--- a/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.H
+++ b/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.H
@@ -32,7 +32,7 @@ Description
     The interrupt is defined by OptimisationSwitches::stopAtWriteNowSignal
 
 SourceFiles
-    sigStopAtWriteNow.C
+    sigStopAtWriteNow.cxx
 
 See also
     Foam::JobInfo
diff --git a/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.C b/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.cxx
similarity index 99%
rename from src/OSspecific/MSwindows/signals/sigStopAtWriteNow.C
rename to src/OSspecific/MSwindows/signals/sigStopAtWriteNow.cxx
index bf93989ab9b9707d88a3f02ae896b70e22f87772..cff3b35b7b02ffcef96108c28d9d139047a86e89 100644
--- a/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.C
+++ b/src/OSspecific/MSwindows/signals/sigStopAtWriteNow.cxx
@@ -34,7 +34,7 @@ License
 #include "Time.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/MSwindows/signals/sigWriteNow.H b/src/OSspecific/MSwindows/signals/sigWriteNow.H
index 1bdf776654928082488c4ceaffe6422f5c44375e..27fd775c96307cbddf308a09f0a7d8f39c3125c6 100644
--- a/src/OSspecific/MSwindows/signals/sigWriteNow.H
+++ b/src/OSspecific/MSwindows/signals/sigWriteNow.H
@@ -32,7 +32,7 @@ Description
     The interrupt is defined by OptimisationSwitches::writeNowSignal
 
 SourceFiles
-    sigWriteNow.C
+    sigWriteNow.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/MSwindows/signals/sigWriteNow.C b/src/OSspecific/MSwindows/signals/sigWriteNow.cxx
similarity index 99%
rename from src/OSspecific/MSwindows/signals/sigWriteNow.C
rename to src/OSspecific/MSwindows/signals/sigWriteNow.cxx
index 389be095b70b493d409ac2219521923ce43bc266..0aadfbb142a5b1bdebdb33295e224a10328072b2 100644
--- a/src/OSspecific/MSwindows/signals/sigWriteNow.C
+++ b/src/OSspecific/MSwindows/signals/sigWriteNow.cxx
@@ -33,7 +33,7 @@ License
 #include "Time.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/MSwindows/signals/signalMacros.C b/src/OSspecific/MSwindows/signals/signalMacros.cxx
similarity index 99%
rename from src/OSspecific/MSwindows/signals/signalMacros.C
rename to src/OSspecific/MSwindows/signals/signalMacros.cxx
index d5fc5a5112508c8e51f008fff6e10a127764b633..8cbfd583b646a977f2e13708294b36424d8eb6f9 100644
--- a/src/OSspecific/MSwindows/signals/signalMacros.C
+++ b/src/OSspecific/MSwindows/signals/signalMacros.cxx
@@ -27,7 +27,7 @@ Description
     File-local code for setting/resetting signal handlers.
 
 SourceFiles
-    signalMacros.C
+    signalMacros.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/MSwindows/signals/timer.H b/src/OSspecific/MSwindows/signals/timer.H
index 90ce3bee800085096ac3323d406057643ea70acc..01350cf499eea2bd2e39268bc583fa30c9a2fa23 100644
--- a/src/OSspecific/MSwindows/signals/timer.H
+++ b/src/OSspecific/MSwindows/signals/timer.H
@@ -57,7 +57,7 @@ Note
     ?something to do with stack frames.
 
 SourceFiles
-    timer.C
+    timer.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/MSwindows/signals/timer.C b/src/OSspecific/MSwindows/signals/timer.cxx
similarity index 99%
rename from src/OSspecific/MSwindows/signals/timer.C
rename to src/OSspecific/MSwindows/signals/timer.cxx
index 2a93506c5243059f88426ff0ec87cae6a66c34c0..17bd0cf796c0f4fe447824bec5b35104b43991d1 100644
--- a/src/OSspecific/MSwindows/signals/timer.C
+++ b/src/OSspecific/MSwindows/signals/timer.cxx
@@ -39,7 +39,7 @@ License
 #include <windows.h>
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 #undef  SIGALRM
 #define SIGALRM 14
diff --git a/src/OSspecific/POSIX/Make/files b/src/OSspecific/POSIX/Make/files
index 9f374e56d942c4c71d6f5cff93d02b38c284c0fe..29c8588445158e0820febf024a803f407fe03460 100644
--- a/src/OSspecific/POSIX/Make/files
+++ b/src/OSspecific/POSIX/Make/files
@@ -4,13 +4,13 @@ cpuInfo/cpuInfo.C
 cpuTime/cpuTimePosix.C
 memInfo/memInfo.C
 
-signals/sigFpe.C
-signals/sigSegv.C
-signals/sigInt.C
-signals/sigQuit.C
-signals/sigStopAtWriteNow.C
-signals/sigWriteNow.C
-signals/timer.C
+signals/sigFpe.cxx
+signals/sigSegv.cxx
+signals/sigInt.cxx
+signals/sigQuit.cxx
+signals/sigStopAtWriteNow.cxx
+signals/sigWriteNow.cxx
+signals/timer.cxx
 
 fileStat/fileStat.C
 
diff --git a/src/OSspecific/POSIX/signals/sigFpe.H b/src/OSspecific/POSIX/signals/sigFpe.H
index 98054224bc7585f9436d7023e6e4eddbbcbf6882..129c469d8ff4d85c4f67c34d86ba14d8e7075e34 100644
--- a/src/OSspecific/POSIX/signals/sigFpe.H
+++ b/src/OSspecific/POSIX/signals/sigFpe.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2018-2023 OpenCFD Ltd.
+    Copyright (C) 2018-2025 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -50,13 +50,15 @@ Description
     restores original). The class behaves as a singleton.
 
 SourceFiles
-    sigFpe.C
+    sigFpe.cxx
 
 \*---------------------------------------------------------------------------*/
 
 #ifndef Foam_sigFpe_H
 #define Foam_sigFpe_H
 
+#include <algorithm>
+#include <limits>
 #include <cstddef>  // For std::size_t
 #include "scalarFwd.H"
 
@@ -96,6 +98,23 @@ class sigFpe
         //- Handler for caught signals - ends job and prints stack
         static void sigHandler(int);
 
+        //- Fill (float | double) buffer with signalling NaN
+        template<class FloatType>
+        inline static void fill_with_NaN(FloatType* buf, size_t count)
+        {
+            if (buf && count)
+            {
+                const auto val =
+                    std::numeric_limits<FloatType>::signaling_NaN();
+
+                // [float|double] so do not need std::uninitialized_fill_n()
+                // Can dispatch with
+                // - std::execution::par_unseq
+                // - std::execution::unseq
+                std::fill_n(buf, count, val);
+            }
+        }
+
 
 public:
 
@@ -124,6 +143,15 @@ public:
         //- True if NaN memory initialisation is currently active.
         static bool nanActive() noexcept { return nanActive_; }
 
+        //- Set NaN memory initialisation on/off.
+        //  \return the previous value
+        static bool nanActive(bool on) noexcept
+        {
+            bool old(nanActive_);
+            nanActive_ = on;
+            return old;
+        }
+
         //- Activate SIGFPE handler when FOAM_SIGFPE is enabled.
         //- Activate fill memory with signaling_NaN when FOAM_SETNAN is enabled
         static void set(bool verbose=false);
@@ -131,11 +159,36 @@ public:
         //- Deactivate SIGFPE handler and NaN memory initialisation
         static void unset(bool verbose=false);
 
-        //- Fill data block with signaling_NaN values
-        static void fillNan(char* buf, size_t count);
+        //- Fill data block with signaling_NaN values if nanActive().
+        //- Does a reinterpret to \c Foam::scalar
+        static void fillNan_if(void* buf, size_t count)
+        {
+            if (nanActive_)
+            {
+                fill_with_NaN
+                (
+                    reinterpret_cast<Foam::scalar*>(buf),
+                    (count/sizeof(Foam::scalar))
+                );
+            }
+        }
 
-        //- Fill data block with signaling_NaN values
-        static void fillNan(UList<scalar>& list);
+        //- Fill data block with signaling_NaN values.
+        //- Does a reinterpret to \c Foam::scalar
+        static void fillNan(char* buf, size_t count)
+        {
+            fill_with_NaN
+            (
+                reinterpret_cast<Foam::scalar*>(buf),
+                (count/sizeof(Foam::scalar))
+            );
+        }
+
+        //- Fill data block with (float) signaling_NaN values
+        static void fillNan(UList<float>& list);
+
+        //- Fill data block with (double) signaling_NaN values
+        static void fillNan(UList<double>& list);
 
 
     // Helpers
diff --git a/src/OSspecific/POSIX/signals/sigFpe.C b/src/OSspecific/POSIX/signals/sigFpe.cxx
similarity index 80%
rename from src/OSspecific/POSIX/signals/sigFpe.C
rename to src/OSspecific/POSIX/signals/sigFpe.cxx
index 079d254bafa63792a7090285f4b794e6767754de..7b458ac0db2d25f148bd381a48bb37e6b9855bdb 100644
--- a/src/OSspecific/POSIX/signals/sigFpe.C
+++ b/src/OSspecific/POSIX/signals/sigFpe.cxx
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2015 OpenFOAM Foundation
-    Copyright (C) 2016-2023 OpenCFD Ltd.
+    Copyright (C) 2016-2025 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -33,11 +33,9 @@ License
 #include "IOstreams.H"
 #include "UList.H"
 #include "Switch.H"
-#include <algorithm>
-#include <limits>
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 #if defined(__linux__) && defined(__GNUC__)
     #ifndef __USE_GNU
@@ -91,24 +89,12 @@ extern "C"
         // Call the low-level GLIBC malloc function
         void* ptr = __libc_malloc(size);
 
-        if (Foam::sigFpe::nanActive())
-        {
-            // Fill with signaling_NaN
-            const auto val = std::numeric_limits<Foam::scalar>::signaling_NaN();
-
-            // Can dispatch with
-            // - std::execution::parallel_unsequenced_policy
-            // - std::execution::unsequenced_policy
-            std::fill_n
-            (
-                reinterpret_cast<Foam::scalar*>(ptr),
-                (size/sizeof(Foam::scalar)),
-                val
-            );
-        }
+        // Optionally fill with NaN (depends on current flags)
+        Foam::sigFpe::fillNan_if(ptr, size);
 
         return ptr;
     }
+
 } // End extern C
 
 #endif  // __linux__
@@ -248,37 +234,15 @@ void Foam::sigFpe::unset(bool verbose)
 }
 
 
-void Foam::sigFpe::fillNan(char* buf, size_t count)
+void Foam::sigFpe::fillNan(UList<float>& list)
 {
-    if (!buf || !count) return;
-
-    // Fill with signaling_NaN
-    const auto val = std::numeric_limits<scalar>::signaling_NaN();
-
-    // Can dispatch with
-    // - std::execution::parallel_unsequenced_policy
-    // - std::execution::unsequenced_policy
-    std::fill_n
-    (
-        reinterpret_cast<scalar*>(buf), (count/sizeof(scalar)), val
-    );
+    sigFpe::fill_with_NaN(list.data(), list.size());
 }
 
 
-void Foam::sigFpe::fillNan(UList<scalar>& list)
+void Foam::sigFpe::fillNan(UList<double>& list)
 {
-    if (list.empty()) return;
-
-    // Fill with signaling_NaN
-    const auto val = std::numeric_limits<scalar>::signaling_NaN();
-
-    // Can dispatch with
-    // - std::execution::parallel_unsequenced_policy
-    // - std::execution::unsequenced_policy
-    std::fill_n
-    (
-        list.data(), list.size(), val
-    );
+    sigFpe::fill_with_NaN(list.data(), list.size());
 }
 
 
diff --git a/src/OSspecific/POSIX/signals/sigInt.H b/src/OSspecific/POSIX/signals/sigInt.H
index df9c39ee9530075b3444166157bde4ed7a82c2d4..2f3f30f4a4f7771e85f4d24dbf27fea98521ec47 100644
--- a/src/OSspecific/POSIX/signals/sigInt.H
+++ b/src/OSspecific/POSIX/signals/sigInt.H
@@ -41,7 +41,7 @@ See also
     Foam::JobInfo
 
 SourceFiles
-    sigInt.C
+    sigInt.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/POSIX/signals/sigInt.C b/src/OSspecific/POSIX/signals/sigInt.cxx
similarity index 98%
rename from src/OSspecific/POSIX/signals/sigInt.C
rename to src/OSspecific/POSIX/signals/sigInt.cxx
index f50b20dca83d00ea96221341a0089f40b0fc4ae4..6ddd9a9f319d9bbe94270120c5666c4edf45da83 100644
--- a/src/OSspecific/POSIX/signals/sigInt.C
+++ b/src/OSspecific/POSIX/signals/sigInt.cxx
@@ -32,7 +32,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/POSIX/signals/sigQuit.H b/src/OSspecific/POSIX/signals/sigQuit.H
index 7525647bfb958a57e874d2b21ad830acf787eb72..a7a7de630f517734e30619cbb7583ead054810bd 100644
--- a/src/OSspecific/POSIX/signals/sigQuit.H
+++ b/src/OSspecific/POSIX/signals/sigQuit.H
@@ -40,7 +40,7 @@ See also
     Foam::JobInfo
 
 SourceFiles
-    sigQuit.C
+    sigQuit.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/POSIX/signals/sigQuit.C b/src/OSspecific/POSIX/signals/sigQuit.cxx
similarity index 98%
rename from src/OSspecific/POSIX/signals/sigQuit.C
rename to src/OSspecific/POSIX/signals/sigQuit.cxx
index dda6ff025bd74bc997185a43c94eb93877c97a05..6c40606254766dcdebcbff333a23c3ea6bdbaceb 100644
--- a/src/OSspecific/POSIX/signals/sigQuit.C
+++ b/src/OSspecific/POSIX/signals/sigQuit.cxx
@@ -32,7 +32,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/POSIX/signals/sigSegv.H b/src/OSspecific/POSIX/signals/sigSegv.H
index 5c0f6d4833d1ad67549c22ce9c951e5b7d4239c2..615b833e046f93628f475f2b29578deed7c6f4e0 100644
--- a/src/OSspecific/POSIX/signals/sigSegv.H
+++ b/src/OSspecific/POSIX/signals/sigSegv.H
@@ -40,7 +40,7 @@ See also
     Foam::JobInfo
 
 SourceFiles
-    sigSegv.C
+    sigSegv.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/MSwindows/signals/sigSegv.C b/src/OSspecific/POSIX/signals/sigSegv.cxx
similarity index 98%
rename from src/OSspecific/MSwindows/signals/sigSegv.C
rename to src/OSspecific/POSIX/signals/sigSegv.cxx
index 9fe56674f499ba0bd0ed07ac59965d572630ea94..1c147c2e8362e7d0b5aa64e96c009f1ebb9404b2 100644
--- a/src/OSspecific/MSwindows/signals/sigSegv.C
+++ b/src/OSspecific/POSIX/signals/sigSegv.cxx
@@ -32,7 +32,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H
index 200e96f8b2808beaf4479423f3fec2d3719bc684..22f040764e75b09b85b74a7399371de9bad06a63 100644
--- a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H
+++ b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.H
@@ -32,7 +32,7 @@ Description
     The interrupt is defined by OptimisationSwitches::stopAtWriteNowSignal
 
 SourceFiles
-    sigStopAtWriteNow.C
+    sigStopAtWriteNow.cxx
 
 See also
     Foam::JobInfo
diff --git a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.cxx
similarity index 99%
rename from src/OSspecific/POSIX/signals/sigStopAtWriteNow.C
rename to src/OSspecific/POSIX/signals/sigStopAtWriteNow.cxx
index d2579f0dbd87d2eb5773c66f853be8cb4a569dfa..1de20fc2c7c683d992261c7dd5dfecbb16b70bb2 100644
--- a/src/OSspecific/POSIX/signals/sigStopAtWriteNow.C
+++ b/src/OSspecific/POSIX/signals/sigStopAtWriteNow.cxx
@@ -34,7 +34,7 @@ License
 #include "Time.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/POSIX/signals/sigWriteNow.H b/src/OSspecific/POSIX/signals/sigWriteNow.H
index 0d8372f41058d03d0794753564d8b0e668bcd5c9..bc203f4043b26d03107b16501f7f6274997708de 100644
--- a/src/OSspecific/POSIX/signals/sigWriteNow.H
+++ b/src/OSspecific/POSIX/signals/sigWriteNow.H
@@ -32,7 +32,7 @@ Description
     The interrupt is defined by OptimisationSwitches::writeNowSignal
 
 SourceFiles
-    sigWriteNow.C
+    sigWriteNow.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/POSIX/signals/sigWriteNow.C b/src/OSspecific/POSIX/signals/sigWriteNow.cxx
similarity index 99%
rename from src/OSspecific/POSIX/signals/sigWriteNow.C
rename to src/OSspecific/POSIX/signals/sigWriteNow.cxx
index aac7f8844e5323cf602c5831ab6409255022bf0d..a14b123c29494bbe5acff22f8e95e903d0dde045 100644
--- a/src/OSspecific/POSIX/signals/sigWriteNow.C
+++ b/src/OSspecific/POSIX/signals/sigWriteNow.cxx
@@ -32,7 +32,7 @@ License
 #include "IOstreams.H"
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
diff --git a/src/OSspecific/POSIX/signals/signalMacros.C b/src/OSspecific/POSIX/signals/signalMacros.cxx
similarity index 99%
rename from src/OSspecific/POSIX/signals/signalMacros.C
rename to src/OSspecific/POSIX/signals/signalMacros.cxx
index c4c0ae240d4e65cc826891089fea8e6577bf8775..ca9cfc477f808734e37a5cb84e750ace00573219 100644
--- a/src/OSspecific/POSIX/signals/signalMacros.C
+++ b/src/OSspecific/POSIX/signals/signalMacros.cxx
@@ -27,7 +27,7 @@ Description
     File-local code for setting/resetting signal handlers.
 
 SourceFiles
-    signalMacros.C
+    signalMacros.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/POSIX/signals/timer.H b/src/OSspecific/POSIX/signals/timer.H
index 90ce3bee800085096ac3323d406057643ea70acc..01350cf499eea2bd2e39268bc583fa30c9a2fa23 100644
--- a/src/OSspecific/POSIX/signals/timer.H
+++ b/src/OSspecific/POSIX/signals/timer.H
@@ -57,7 +57,7 @@ Note
     ?something to do with stack frames.
 
 SourceFiles
-    timer.C
+    timer.cxx
 
 \*---------------------------------------------------------------------------*/
 
diff --git a/src/OSspecific/POSIX/signals/timer.C b/src/OSspecific/POSIX/signals/timer.cxx
similarity index 99%
rename from src/OSspecific/POSIX/signals/timer.C
rename to src/OSspecific/POSIX/signals/timer.cxx
index 24b92b86899494050bf18d4e502f3b87a83c73fc..adb7feb8aec69e8e4db88dada80979d8df50f046 100644
--- a/src/OSspecific/POSIX/signals/timer.C
+++ b/src/OSspecific/POSIX/signals/timer.cxx
@@ -33,7 +33,7 @@ License
 #include <unistd.h>
 
 // File-local functions
-#include "signalMacros.C"
+#include "signalMacros.cxx"
 
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //