diff --git a/calc_grad_perc_dev.cc b/calc_grad_perc_dev.cc
index 92f80eb9bf276c3f884e71ef03949b9519b06a84..86e13fa8eabf5bac81513efc5852a21d80a17cfd 100644
--- a/calc_grad_perc_dev.cc
+++ b/calc_grad_perc_dev.cc
@@ -54,17 +54,34 @@ int nonoptarg;
 // for example ... print difference of COGs between 2 images ...
 int do_work(int argc, char* argv[]) 
 {
-  volume4D<float> fw, xpd, ypd, zpd;
+  volume4D<float> fw, xpd, ypd, zpd, tmp;
+  volume<float> mask;
   read_volume4D(fw,fullwarp.value());
-  gradient(fw[0],xpd);
+  mask=fw[0]*0.0f + 1.0f;
+  tmp=lrxgrad(fw[0],mask);
+  xpd.addvolume((tmp[0]+tmp[1])*0.5f);
+  tmp=lrygrad(fw[0],mask);
+  xpd.addvolume((tmp[0]+tmp[1])*0.5f);
+  tmp=lrzgrad(fw[0],mask);
+  xpd.addvolume((tmp[0]+tmp[1])*0.5f);
   xpd[0]/=fw.xdim();
   xpd[1]/=fw.ydim();
   xpd[2]/=fw.zdim();
-  gradient(fw[1],ypd);
+  tmp=lrxgrad(fw[1],mask);
+  ypd.addvolume((tmp[0]+tmp[1])*0.5f);
+  tmp=lrygrad(fw[1],mask);
+  ypd.addvolume((tmp[0]+tmp[1])*0.5f);
+  tmp=lrzgrad(fw[1],mask);
+  ypd.addvolume((tmp[0]+tmp[1])*0.5f);
   ypd[0]/=fw.xdim();
   ypd[1]/=fw.ydim();
   ypd[2]/=fw.zdim();
-  gradient(fw[2],zpd);
+  tmp=lrxgrad(fw[2],mask);
+  zpd.addvolume((tmp[0]+tmp[1])*0.5f);
+  tmp=lrygrad(fw[2],mask);
+  zpd.addvolume((tmp[0]+tmp[1])*0.5f);
+  tmp=lrzgrad(fw[2],mask);
+  zpd.addvolume((tmp[0]+tmp[1])*0.5f);
   zpd[0]/=fw.xdim();
   zpd[1]/=fw.ydim();
   zpd[2]/=fw.zdim();