diff --git a/xgm.py b/xgm.py
index 5f8b0d12fc98b18d8d57197afd411bcd6d9042a8..195550c916cdbcfb40371dceeb7e6507539434eb 100644
--- a/xgm.py
+++ b/xgm.py
@@ -788,7 +788,7 @@ def checkTimApdWindow(data, mcp=1, use_apd=True, intstart=None, intstop=None):
     
 def matchXgmTimPulseId(data, use_apd=True, intstart=None, intstop=None,
                        bkgstart=None, bkgstop=None, t_offset=None, 
-                       npulses=None):
+                       npulses=None, sase3First=True, stride=1):
     ''' Function to match XGM pulse Id with TIM pulse Id.
         Inputs:
             data: xarray Dataset containing XGM and TIM data
@@ -800,18 +800,24 @@ def matchXgmTimPulseId(data, use_apd=True, intstart=None, intstop=None,
             bkgstart: trace index of background start
             bkgstop: trace index of background stop
             t_offset: index separation between two pulses
-            npulses: number of pulses to compute
+            npulses: number of pulses to compute. Needed if no bunch
+                pattern info is available
+            sase3First: bool, needed if bunch pattern is missing.
+            stride: int, used to select pulses in the TIM APD array if
+                no bunch pattern info is available.
             
         Output:
             xr DataSet containing XGM and TIM signals with the share 
             dimension 'pId'. Raw traces, raw XGM and raw APD are dropped.
     '''
-    res = selectSASEinXGM(data, xgm='SCS_XGM').rename({'XGMbunchId':'pId'}).rename('SCS_XGM')
+    res = selectSASEinXGM(data, xgm='SCS_XGM', npulses=npulses,
+                   sase3First=sase3First).rename({'XGMbunchId':'pId'}).rename('SCS_XGM')
     dropList = ['SCS_XGM']
     mergeList = [res]
 
     if 'SA3_XGM' in data: 
-        res2 = selectSASEinXGM(data, xgm='SA3_XGM').rename({'XGMbunchId':'pId'}).rename('SA3_XGM')
+        res2 = selectSASEinXGM(data, xgm='SA3_XGM', npulses=npulses,
+                   sase3First=sase3First).rename({'XGMbunchId':'pId'}).rename('SA3_XGM')
         dropList.append('SA3_XGM')
         mergeList.append(res2)
 
@@ -819,8 +825,8 @@ def matchXgmTimPulseId(data, use_apd=True, intstart=None, intstop=None,
         if 'MCP{}apd'.format(mcp) in data or 'MCP{}raw'.format(mcp) in data:
             MCPapd = getTIMapd(data, mcp=mcp, use_apd=use_apd, intstart=intstart,
                                intstop=intstop,bkgstart=bkgstart, bkgstop=bkgstop,
-                               t_offset=t_offset, 
-                               npulses=npulses).rename('MCP{}apd'.format(mcp))
+                               t_offset=t_offset, npulses=npulses,
+                               stride=stride).rename('MCP{}apd'.format(mcp))
             if use_apd:
                 MCPapd = MCPapd.rename({'apdId':'pId'})
             else: