diff --git a/myTransform.py b/myTransform.py
index 52296fbd98261e998dc2f45e403636c3ab7c54f2..82ef005cffefa7eab732e032bfcc9001fead0c96 100644
--- a/myTransform.py
+++ b/myTransform.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 
 import transform
+from numpy import matrix, sin, cos
 
 class myTransform(transform.transform):
   ### The transform functions should be overloaded for each application
@@ -12,13 +13,39 @@ class myTransform(transform.transform):
 
   # Transform real coordinates into soft coordinates
   def fwdTrans(self, m_positions, t_positions):
-    retval = [m_positions[x] * t_positions[x] for x in range(3)]
-    return retval[:]
+    """ """
+    m_matrix = matrix(m_positions)
+    th, phi, chi = t_positions
+    Rx = matrix([[1, 0, 0],[0, cos(th), sin(th)], [0, -sin(th), cos(th)]])
+    Ry = matrix([[cos(phi), 0, -sin(phi)], [0, 1, 0], [sin(phi), 0, cos(phi)]])
+    Rz = matrix([[cos(chi), sin(chi), 0], [-sin(chi), cos(chi), 0], [0, 0, 1]])
+
+    R = Rx * Ry * Rz
+
+    # Inverse is R.I
+
+    retval = m_matrix * R
+
+    print retval
+    
+    return retval.tolist()[0]
   
   # Transform soft coordinates into real coordinates
   def invTrans(self, tm_positions, t_positions):
-    retval = [tm_positions[x] / t_positions[x] for x in range(3)]
-    return retval[:]
+    """ """
+    tm_matrix = matrix(tm_positions)
+    th, phi, chi = t_positions
+    Rx = matrix([[1, 0, 0],[0, cos(th), sin(th)], [0, -sin(th), cos(th)]])
+    Ry = matrix([[cos(phi), 0, -sin(phi)], [0, 1, 0], [sin(phi), 0, cos(phi)]])
+    Rz = matrix([[cos(chi), sin(chi), 0], [-sin(chi), cos(chi), 0], [0, 0, 1]])
+
+    R = Rx * Ry * Rz
+
+    retval = tm_matrix * R.I
+    
+    print retval
+
+    return retval.tolist()[0]
 
 if __name__ == "__main__":
   prefix = 'kmp2:'