diff --git a/xgm.py b/xgm.py
index bac031752f24f06c6f0a714b7baef6ccd71214db..400ae78eda4661fdc424216a1a50e9898f026e87 100644
--- a/xgm.py
+++ b/xgm.py
@@ -251,7 +251,24 @@ def selectSASEinXGM(data, sase='sase3', xgm='SCS_XGM', sase3First=True, npulses=
         elif pulseIdmin_sa3 > pulseIdmax_sa1:
             sa3First = False
         else:
-            print('Interleaved mode')
+            print('Interleaved mode, but no sase-dedicated XGM data loaded.')
+            saseStr = 'SA{}'.format(sase[4])
+            xgmStr = xgm.split('_')[0]
+            print('Loading {}_{} data...'.format(xgmStr, saseStr))
+            try:
+                if npulses == None:
+                    npulses = data['npulses_sase{}'.format(sase[4])].max().values
+                if xgmStr == 'XTD10':
+                    source = 'SA3_XTD10_XGM/XGM/DOOCS:output'
+                if xgmStr == 'SCS':
+                    source = 'SCS_BLU_XGM/XGM/DOOCS:output'
+                key = 'data.intensitySa{}TD'.format(sase[4])
+                result = data.attrs['run'].get_array(source, key, extra_dims=['XGMbunchId'])
+                result = result.isel(XGMbunchId=slice(0, npulses))                
+                return result
+            except:
+                print('Could not load {}_{} data. '.format(xgmStr, saseStr) +
+                  'Interleaved mode and no sase-dedicated data is not yet supported.')
 
     #take the derivative along the trainId to track changes in pulse number:
     diff = npulses_sa3.diff(dim='trainId')
@@ -578,6 +595,8 @@ def getTIMapd(data, mcp=1, use_apd=True, intstart=None, intstop=None,
     sa3 = data['sase3'].where(data['sase3']>1, drop=True)
     npulses_sa3 = data['npulses_sase3']
     maxpulses = int(npulses_sa3.max().values)
+    if npulses is not None:
+        maxpulses = np.min([npulses, maxpulses])
     step = 1
     if maxpulses > 1:
         #Calculate the number of non-lasing pulses between two lasing pulses (step)
@@ -599,7 +618,7 @@ def getTIMapd(data, mcp=1, use_apd=True, intstart=None, intstop=None,
     sa3 -= sa3[:,0]
     sa3 = sa3.astype(int)
     if np.all(npulses_sa3 == npulses_sa3[0]):
-        tim = apd[:, sa3[0].values]
+        tim = apd[:, sa3[0].values[:maxpulses]]
         return tim
     
     stride = 1