diff --git a/fslmerge.cc b/fslmerge.cc
index b7214a30724360bc5076c4b71f749ab0ba837695..57ddcc41a9649378cad90a18e9c26641c596eb2c 100755
--- a/fslmerge.cc
+++ b/fslmerge.cc
@@ -44,7 +44,7 @@ int fmrib_main(int argc, char *argv[])
     return(1);
   }
 
-  int xdimtot(header.dim[1]), ydimtot(header.dim[2]), zdimtot(header.dim[3]), tdimtot(header.dim[4]);
+  int xdimtot(max(header.dim[1],1L)), ydimtot(max(header.dim[2],1L)), zdimtot(max(header.dim[3],1L)), tdimtot(max(header.dim[4],1L));
 
   if(direction==4)
   {
@@ -55,10 +55,10 @@ int fmrib_main(int argc, char *argv[])
   for(int vol = 4; vol < argc; vol++)
   {
     header=reader.loadHeader(return_validimagefilename(string(argv[vol])));
-    if (direction==0) tdimtot+=header.dim[4];
-    if (direction==1) xdimtot+=header.dim[1];
-    if (direction==2) ydimtot+=header.dim[2];
-    if (direction==3) zdimtot+=header.dim[3];
+    if (direction==0) tdimtot+=max(header.dim[4],1L);
+    if (direction==1) xdimtot+=max(header.dim[1],1L);
+    if (direction==2) ydimtot+=max(header.dim[2],1L);
+    if (direction==3) zdimtot+=max(header.dim[3],1L);
   }
   volume4D<T> output_volume(xdimtot,ydimtot,zdimtot,tdimtot);
   read_volume4D(input_volume,string(argv[3]));