diff --git a/fslmaths.cc b/fslmaths.cc
index 47be3d143b289c39af3aa054160d3023cdf50009..8d5f6bb6869dff093daf24ef854fdd8a1eaa6b39 100755
--- a/fslmaths.cc
+++ b/fslmaths.cc
@@ -52,6 +52,10 @@ int printUsage(const string& programName)
   cout << " -log   : natural logarithm" << endl;
   cout << " -sin   : sine function" << endl;
   cout << " -cos   : cosine function" << endl;
+  cout << " -tan   : tangent function" << endl;
+  cout << " -asin  : arc sine function" << endl;
+  cout << " -acos  : arc cosine function" << endl;
+  cout << " -atan  : arc tangent function" << endl;
   cout << " -sqr   : square" << endl;
   cout << " -sqrt  : square root" << endl;
   cout << " -recip : reciprocal (1/current image)" << endl;
@@ -670,6 +674,43 @@ if (!separatenoise)
 	    for(int x=0;x<inputVolume.xsize();x++)
               inputVolume.value(x,y,z,t)=(T)sin((double)inputVolume.value(x,y,z,t));
     }
+    /***************************************************************/
+    else if (string(argv[i])=="-tan")
+    {
+      for(int t=0;t<inputVolume.tsize();t++)           
+        for(int z=0;z<inputVolume.zsize();z++)
+          for(int y=0;y<inputVolume.ysize();y++)	    
+	    for(int x=0;x<inputVolume.xsize();x++)
+              inputVolume.value(x,y,z,t)=(T)tan((double)inputVolume.value(x,y,z,t));
+    }
+    /***************************************************************/
+    else if (string(argv[i])=="-asin")
+    {
+      for(int t=0;t<inputVolume.tsize();t++)           
+        for(int z=0;z<inputVolume.zsize();z++)
+          for(int y=0;y<inputVolume.ysize();y++)	    
+	    for(int x=0;x<inputVolume.xsize();x++)
+              inputVolume.value(x,y,z,t)=(T)asin((double)inputVolume.value(x,y,z,t));
+    }
+    /***************************************************************/
+    else if (string(argv[i])=="-acos")
+    {
+      for(int t=0;t<inputVolume.tsize();t++)           
+        for(int z=0;z<inputVolume.zsize();z++)
+          for(int y=0;y<inputVolume.ysize();y++)	    
+	    for(int x=0;x<inputVolume.xsize();x++)
+              inputVolume.value(x,y,z,t)=(T)acos((double)inputVolume.value(x,y,z,t));
+    }
+    /***************************************************************/
+    else if (string(argv[i])=="-atan")
+    {
+      for(int t=0;t<inputVolume.tsize();t++)           
+        for(int z=0;z<inputVolume.zsize();z++)
+          for(int y=0;y<inputVolume.ysize();y++)	    
+	    for(int x=0;x<inputVolume.xsize();x++)
+              inputVolume.value(x,y,z,t)=(T)atan((double)inputVolume.value(x,y,z,t));
+    }
+    /***************************************************************/
     /* Uncorrected nonparametric P-value, assuming t-dim is perm-dim */
     else if (string(argv[i])=="-pval" || string(argv[i])=="-pval0")
     {