diff --git a/fslmaths.cc b/fslmaths.cc
index a4fbd92370c48f3ca3a95ea27ec8d70dcd5008f0..1505ae076418cb723c934bf72cecf47fccad373e 100755
--- a/fslmaths.cc
+++ b/fslmaths.cc
@@ -8,13 +8,7 @@
 
 #include "newimage/newimageall.h"
 #include "miscmaths/miscmaths.h"
-
-
-#if defined ( __CYGWIN__ ) ||  defined (__sun)
-extern "C" { 
-#include <ieeefp.h> 
-}
-#endif
+#include "utils/fsl_isfinite.h"
 
 using namespace MISCMATHS;
 using namespace NEWIMAGE;
@@ -800,7 +794,7 @@ if (!separatenoise)
          for(int z=0;z<input_volume.zsize();z++)
            for(int y=0;y<input_volume.ysize();y++)	    
 	     for(int x=0;x<input_volume.xsize();x++)
-               if ( finite((double)input_volume.value(x,y,z,t))) input_volume.value(x,y,z,t)=0;
+               if ( isfinite((double)input_volume.value(x,y,z,t))) input_volume.value(x,y,z,t)=0;
 	       else input_volume.value(x,y,z,t)=1;
      }
      /******************************************************/
@@ -810,7 +804,7 @@ if (!separatenoise)
          for(int z=0;z<input_volume.zsize();z++)
            for(int y=0;y<input_volume.ysize();y++)	    
 	     for(int x=0;x<input_volume.xsize();x++)
-               if (!finite((double)input_volume.value(x,y,z,t))) input_volume.value(x,y,z,t)=0;     
+               if (!isfinite((double)input_volume.value(x,y,z,t))) input_volume.value(x,y,z,t)=0;    
      }
      /******************************************************/
     else if (string(argv[i])=="-roi")
diff --git a/fslstats.cc b/fslstats.cc
index c6a6ed245a129ef0433ad449e976861af4b14e90..c83e0d159133901fc9df0b2a9ae441aa90ce215e 100644
--- a/fslstats.cc
+++ b/fslstats.cc
@@ -9,6 +9,7 @@
 #include "miscmaths/miscmaths.h"
 #include "newimage/newimageall.h"
 #include "newimage/costfns.h"
+#include "utils/fsl_isfinite.h"
 
 using namespace NEWIMAGE;
 using namespace MISCMATHS;
@@ -17,12 +18,6 @@ bool masks_used=false;
 bool lthr_used=false;
 bool uthr_used=false;
 
-#if defined ( __CYGWIN__ ) ||  defined (__sun)
-extern "C" { 
-#include <ieeefp.h> //for finite
-}
-#endif
-
 void print_usage(const string& progname) {
   cout << "Usage: fslstats <input> [options]" << endl << endl;
   cout << endl;
@@ -171,7 +166,7 @@ int fmrib_main_float(int argc, char* argv[])
         for (int z=vol.minz(); z<=vol.maxz(); z++)
           for (int y=vol.miny(); y<=vol.maxy(); y++)
             for (int x=vol.minx(); x<=vol.maxx(); x++)
-              if (!finite((double)vol(x,y,z,t)))
+              if (!isfinite((double)vol(x,y,z,t)))
 	        vol(x,y,z,t)=0;
     } else if (sarg=="-m") {
       if (masks_used) cout <<  vol.mean(mask) << " ";