diff --git a/unit_tests/fslcreatehd/feedsRun b/unit_tests/fslcreatehd/feedsRun
index e4868649e74ae95236b95f5a22fc2abd948f2bbd..baec62b2f55087d5e7d3939597961d7e89712711 100755
--- a/unit_tests/fslcreatehd/feedsRun
+++ b/unit_tests/fslcreatehd/feedsRun
@@ -8,13 +8,11 @@ function neq() {
     n2=$2
     result=`echo "$n1 == $n2" | bc`
 
-    if [[ "$result" == "0" ]]; then 
-	echo "$n1 != $n2"
+    if [[ "$result" == "0" ]]; then
+        echo "$n1 != $n2"
         return 0;
     fi
 
-    # echo "$n1 == $n2"
-
     return 1;
 }
 
@@ -32,42 +30,67 @@ function fslcreatehd_test() {
     originx=$1; shift
     originy=$1; shift
     originz=$1; shift
+    dtype=$1;   shift
     fname=$1;   shift
 
-    # echo "$originx * $pixdim1"
-
-    originx=`echo "$originx * $pixdim1" | bc`
-    originy=`echo "$originy * $pixdim2" | bc`
-    originz=`echo "$originz * $pixdim3" | bc`
-
-    got_dim0=`   fslhd 3d | egrep "^dim0"      | tr -s '\t' | cut -f 2`
-    got_dim1=`   fslhd 3d | egrep "^dim1"      | tr -s '\t' | cut -f 2`
-    got_dim2=`   fslhd 3d | egrep "^dim2"      | tr -s '\t' | cut -f 2`
-    got_dim3=`   fslhd 3d | egrep "^dim3"      | tr -s '\t' | cut -f 2`
-    got_dim4=`   fslhd 3d | egrep "^dim4"      | tr -s '\t' | cut -f 2`
-    got_pixdim1=`fslhd 3d | egrep "^pixdim1"   | tr -s '\t' | cut -f 2`
-    got_pixdim2=`fslhd 3d | egrep "^pixdim2"   | tr -s '\t' | cut -f 2`
-    got_pixdim3=`fslhd 3d | egrep "^pixdim3"   | tr -s '\t' | cut -f 2`
-    got_pixdim4=`fslhd 3d | egrep "^pixdim4"   | tr -s '\t' | cut -f 2`
-    got_originx=`fslhd 3d | egrep "^sto_xyz:1"              | cut -d ' ' -f 4`
-    got_originy=`fslhd 3d | egrep "^sto_xyz:2"              | cut -d ' ' -f 4`
-    got_originz=`fslhd 3d | egrep "^sto_xyz:3"              | cut -d ' ' -f 4`
-
-    if neq $dim0    $got_dim0;    then return 1; fi
-    if neq $dim1    $got_dim1;    then return 1; fi
-    if neq $dim2    $got_dim2;    then return 1; fi
-    if neq $dim3    $got_dim3;    then return 1; fi
-    if neq $dim4    $got_dim4;    then return 1; fi
-    if neq $pixdim1 $got_pixdim1; then return 1; fi
-    if neq $pixdim2 $got_pixdim2; then return 1; fi
-    if neq $pixdim3 $got_pixdim3; then return 1; fi
-    if neq $pixdim4 $got_pixdim4; then return 1; fi
-    if neq $originx $got_originx; then return 1; fi
-    if neq $originy $got_originy; then return 1; fi
-    if neq $originz $got_originz; then return 1; fi
+    args="$dim0 $dim1 $dim2 $dim3 $pixdim1 $pixdim2 $pixdim3 $pixdim4 $originx  $originy  $originz $dtype $fname"
+
+    originx=`echo "($dim1 * $pixdim1) - (( $originx + 1) * $pixdim1)" | bc`
+    originy=`echo                        "-$originy      * $pixdim2"  | bc`
+    originz=`echo                        "-$originz      * $pixdim3"  | bc`
+
+    got_dim0=`   fslhd $fname | egrep "^dim0"      | tr -s '\t' | cut -f 2`
+    got_dim1=`   fslhd $fname | egrep "^dim1"      | tr -s '\t' | cut -f 2`
+    got_dim2=`   fslhd $fname | egrep "^dim2"      | tr -s '\t' | cut -f 2`
+    got_dim3=`   fslhd $fname | egrep "^dim3"      | tr -s '\t' | cut -f 2`
+    got_dim4=`   fslhd $fname | egrep "^dim4"      | tr -s '\t' | cut -f 2`
+    got_pixdim1=`fslhd $fname | egrep "^pixdim1"   | tr -s '\t' | cut -f 2`
+    got_pixdim2=`fslhd $fname | egrep "^pixdim2"   | tr -s '\t' | cut -f 2`
+    got_pixdim3=`fslhd $fname | egrep "^pixdim3"   | tr -s '\t' | cut -f 2`
+    got_pixdim4=`fslhd $fname | egrep "^pixdim4"   | tr -s '\t' | cut -f 2`
+    got_dtype=`  fslhd $fname | egrep "^datatype"  | tr -s '\t' | cut -f 2`
+    got_originx=`fslhd $fname | egrep "^sto_xyz:1"              | cut -d ' ' -f 4`
+    got_originy=`fslhd $fname | egrep "^sto_xyz:2"              | cut -d ' ' -f 4`
+    got_originz=`fslhd $fname | egrep "^sto_xyz:3"              | cut -d ' ' -f 4`
+
+    if neq $dim0    $got_dim0;    then echo $args; return 1; fi
+    if neq $dim1    $got_dim1;    then echo $args; return 1; fi
+    if neq $dim2    $got_dim2;    then echo $args; return 1; fi
+    if neq $dim3    $got_dim3;    then echo $args; return 1; fi
+    if neq $dim4    $got_dim4;    then echo $args; return 1; fi
+    if neq $pixdim1 $got_pixdim1; then echo $args; return 1; fi
+    if neq $pixdim2 $got_pixdim2; then echo $args; return 1; fi
+    if neq $pixdim3 $got_pixdim3; then echo $args; return 1; fi
+    if neq $pixdim4 $got_pixdim4; then echo $args; return 1; fi
+    if neq $dtype   $got_dtype;   then echo $args; return 1; fi
+    if neq $originx $got_originx; then echo $args; return 1; fi
+    if neq $originy $got_originy; then echo $args; return 1; fi
+    if neq $originz $got_originz; then echo $args; return 1; fi
 
     return 0
 }
 
-fslcreatehd           5 5 5 1   0.5 1.5 1.25 1   1 2 3   2   3d.nii.gz
-fslcreatehd_test  3   5 5 5 1   0.5 1.5 1.25 1   1 2 3   2   3d.nii.gz
+
+tests="
+5 5 5 1     2   2   2    1     0 0 0     2
+5 5 5 1     2   2   2    1     0 0 0     4
+5 5 5 1     2   2   2    1     0 0 0     8
+5 5 5 1     2   2   2    1     0 0 0     16
+5 5 5 1     2   2   2    1     1 2 3     64
+5 5 5 1     0.5 1.5 1.25 1     0 0 0     2
+5 5 5 1     0.5 1.5 1.25 1.5   0 0 0     2
+5 5 5 1     0.5 1.5 1.25 0.5   0 0 0     2
+
+30 30 30 5   5 10 3 5   10 20 10  2
+"
+
+echo "$tests" | while IFS= read -r test; do
+  if [[ $test =~ ^\ *$ ]]; then
+    continue
+  fi
+
+  rm `imglob -extension fslcreatehd_test_img` &> /dev/null || true
+  fslcreatehd        $test fslcreatehd_test_img
+  fslcreatehd_test 4 $test fslcreatehd_test_img
+
+done