diff --git a/tracking/element.py b/tracking/element.py
index 2231c04f4a964b3bd753a2510e79d9cb50395ca2..4fa5aea90d2c314fffa6ca09356366e166e3d261 100644
--- a/tracking/element.py
+++ b/tracking/element.py
@@ -153,6 +153,11 @@ class TransverseMap(Element):
         self.gamma = self.ring.optics.local_gamma
         self.dispersion = self.ring.optics.local_dispersion
         self.phase_advance = self.ring.tune[0:2]*2*np.pi
+        
+        if self.ring.adts.all() == 0:
+            self.adts_option = False
+        else:
+            self.adts_option = True
     
     @Element.parallel    
     def track(self, bunch):
@@ -166,9 +171,17 @@ class TransverseMap(Element):
         bunch : Bunch or Beam object
         """
 
-        # Compute phase adcence which depends on energy via chromaticity
-        phase_advance_x = self.phase_advance[0]*(1+self.ring.chro[0]*bunch["delta"])
-        phase_advance_y = self.phase_advance[1]*(1+self.ring.chro[1]*bunch["delta"])
+        # Compute phase advance which depends on energy via chromaticity and ADTS
+        if self.adts_option is True:
+            phase_advance_x = self.phase_advance[0]*(1+self.ring.chro[0]*bunch["delta"]+
+                                self.ring.adts[0](bunch['x'])+self.ring.adts[2](bunch['y']))
+            
+            phase_advance_y = self.phase_advance[1]*(1+self.ring.chro[1]*bunch["delta"]+
+                                self.ring.adts[1](bunch['x'])+self.ring.adts[3](bunch['y']))
+        
+        else:
+            phase_advance_x = self.phase_advance[0]*(1+self.ring.chro[0]*bunch["delta"])
+            phase_advance_y = self.phase_advance[1]*(1+self.ring.chro[1]*bunch["delta"])
         
         # 6x6 matrix corresponding to (x, xp, delta, y, yp, delta)
         matrix = np.zeros((6,6,len(bunch)))
diff --git a/tracking/synchrotron.py b/tracking/synchrotron.py
index f3842c1e72dc656702f20ca3ad6a346b73259144..093b27488b88438969b950fafff49e25ecb53acd 100644
--- a/tracking/synchrotron.py
+++ b/tracking/synchrotron.py
@@ -99,6 +99,7 @@ class Synchrotron:
         self.sigma_delta = kwargs.get('sigma_delta') # Equilibrium energy spread
         self.sigma_0 = kwargs.get('sigma_0') # Natural bunch length [s]
         self.emit = kwargs.get('emit') # X/Y emittances in [m.rad]
+        self.adts = kwargs.get('adts') # Amplitude-Dependent Tune Shift (ADTS)
                 
     @property
     def h(self):