diff --git a/modules/io/src/img/map_io_mrc_handler.cc b/modules/io/src/img/map_io_mrc_handler.cc
index 78f481d51a4f8bd401936c4e6bc1fa744baaf8a5..aba01630fe25f46b5b5bb14da2a730ee1b6596f3 100644
--- a/modules/io/src/img/map_io_mrc_handler.cc
+++ b/modules/io/src/img/map_io_mrc_handler.cc
@@ -74,7 +74,7 @@ u v w x . . .     d*c*b*a b c d   3
 #include <ost/base.hh>
 
 #include <ost/img/image_state.hh>
-#include <ost/img/alg/stat.hh>
+#include <ost/img/alg/stat_accumulator.hh>
 #include <ost/img/alg/normalizer_factory.hh>
 #include <ost/img/util.hh>
 #include <ost/img/progress.hh>
@@ -294,11 +294,19 @@ public:
       y=1.0;
       z=1.0;
     }
-    ost::img::alg::Stat stat;
-    im.Apply(stat);
-    amin=stat.GetMinimum();
-    amax=stat.GetMaximum();
-    amean=stat.GetMean();
+    ost::img::alg::StatAccumulator<1> acc;
+    if(im.GetType()==img::REAL) {
+      img::image_state::RealSpatialImageState *isr=dynamic_cast<img::image_state::RealSpatialImageState*>(im.ImageStatePtr().get());
+      if(! isr){
+        throw(IOException("MRC/CCP4 export: dynamic cast failed in header base."));
+      }
+      for(Real* ptr = isr->Data().GetData(); ptr<isr->Data().GetEnd(); ++ptr) {
+        acc(*ptr);
+      }
+      amin=acc.GetMinimum();
+      amax=acc.GetMaximum();
+      amean=acc.GetMean();
+    }
     for(unsigned int i=0;i<800;++i)
     {
       label[i]=' ';