diff --git a/modules/io/src/converting_streams.hh b/modules/io/src/converting_streams.hh
index fb6b3b82d103aee36cb298be7956dfb52269027a..b451769185cd823c7f66cd465242b935dfd24078 100644
--- a/modules/io/src/converting_streams.hh
+++ b/modules/io/src/converting_streams.hh
@@ -204,6 +204,10 @@ public:
   {
     return read_helper(value,n);
   }
+  BinaryIStream& read(int8_t* value,std::streamsize n)
+  {
+    return read_helper(value,n);
+  }
   BinaryIStream& read(int16_t* value,std::streamsize n)
   {
     return read_helper(value,n);
diff --git a/modules/io/src/img/map_io_mrc_handler.cc b/modules/io/src/img/map_io_mrc_handler.cc
index aba01630fe25f46b5b5bb14da2a730ee1b6596f3..9d1740abbd6a1b0b20e463ee166514af472d477a 100644
--- a/modules/io/src/img/map_io_mrc_handler.cc
+++ b/modules/io/src/img/map_io_mrc_handler.cc
@@ -841,7 +841,7 @@ void import_helper(img::MapHandle& image, std::istream& in,const MRC& formatmrc)
     } else {
       throw IOException("internal error in MRC io: expected ComplexHalfFrequencyImageState");
     }
-  } else if (header.mode>=0 && header.mode<=2) {
+  } else if (header.mode==0 || header.mode==2 || header.mode==5 || header.mode==6 || header.mode==7) {
     img::Size msize;
     msize[header.mapc-1]=header.nc;
     msize[header.mapr-1]=header.nr;
@@ -861,11 +861,15 @@ void import_helper(img::MapHandle& image, std::istream& in,const MRC& formatmrc)
     LOG_INFO("resulting image extent: " << image.GetExtent());
     if(img::image_state::RealSpatialImageState *rs=dynamic_cast<img::image_state::RealSpatialImageState*>(image.ImageStatePtr().get())) {
       if(header.mode==0) {
-        detail::real_filler<uchar,CONVERSIONTYPE>(*rs,f,header);
-      } else if(header.mode==1) {
-        detail::real_filler<unsigned short,CONVERSIONTYPE>(*rs,f,header);
+        detail::real_filler<int8_t,CONVERSIONTYPE>(*rs,f,header);
+      } else if(header.mode==1 || header.mode==5) {
+        detail::real_filler<int16_t,CONVERSIONTYPE>(*rs,f,header);
       } else if(header.mode==2) {
         detail::real_filler<float,CONVERSIONTYPE>(*rs,f,header);
+      } else if(header.mode==6) {
+        detail::real_filler<uint16_t,CONVERSIONTYPE>(*rs,f,header);
+      } else if(header.mode==7) {
+        detail::real_filler<int32_t,CONVERSIONTYPE>(*rs,f,header);
       }
     } else {
       throw IOException("internal error in MRC/CCP4 io: expected RealSpatialImageState");