diff --git a/XAS.py b/XAS.py
index 2ff3c914555f848828a7075431e5ee6c8857af03..dc4d36c327ec4d44c67ee344830f2a8fdf5672be 100644
--- a/XAS.py
+++ b/XAS.py
@@ -113,12 +113,12 @@ def binning(x, data, func, bins=100, bin_length=None):
     dummy = func([])
     res = np.empty((nb_bins), dtype=dummy.dtype)
     for k in range(nb_bins):
-        res[k] = func(data[bin_idx == k])
+        res[k] = func(data[k+1==bin_idx])
 
     return bins, res
 
-def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffset=0, plot=False,
-    fluorescence = False):
+def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', 
+        Iooffset=0, plot=False, fluorescence=False):
     """ Compute the XAS spectra from a xarray nrun.
 
         Inputs:
@@ -130,12 +130,12 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
             NRJkey: string for the nrj fields, typically 'nrj'
             Iooffset: offset to apply on Io
             plot: boolean, displays a XAS spectrum if True
-            fluorescnce: boolean, if True, absorption is the ratio,
+            fluorescence: boolean, if True, absorption is the ratio,
                 if False, absorption is negative log
 
         Outputs:
             a dictionnary containing:
-                nrj: the bins center
+                nrj: the mean of photon energy in each bin
                 muA: the absorption
                 sigmaA: standard deviation on the absorption
                 sterrA: standard error on the absorption
@@ -189,12 +189,13 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
     sterrA = nosample['sigmaA']/np.sqrt(nosample['counts'])
 
     bins_c = 0.5*(bins[1:] + bins[:-1])
-    
+    bin_idx = np.digitize(rundata['nrj'], bins)
+    nrj = np.array([ np.mean(rundata['nrj'][idx+1==bin_idx]) for idx in range(len(bins)-1)])    
     if plot:
         f = plt.figure(figsize=(6.5,6))
         gs = gridspec.GridSpec(2,1,height_ratios=[4,1])
         ax1 = plt.subplot(gs[0])
-        ax1.plot(bins_c, muA, color='C1', label=r'$\sigma$')
+        ax1.plot(nrj, muA, color='C1', label=r'$\sigma$')
         if fluorescence:
             ax1.set_ylabel('XAS (fluorescence)')
         else:
@@ -202,7 +203,7 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
         ax1.set_xlabel('Energy (eV)')
         ax1.legend()
         ax1_twin = ax1.twinx()
-        ax1_twin.bar(bins_c, nosample['muIo'], width=0.80*(bins_c[1]-bins_c[0]),
+        ax1_twin.bar(nrj, nosample['muIo'], width=0.80*(bins_c[1]-bins_c[0]),
                 color='C1', alpha=0.2)
         ax1_twin.set_ylabel('Io')
         try:
@@ -213,13 +214,13 @@ def xas(nrun, bins=None, Iokey='SCS_SA3', Itkey='MCP3apd', nrjkey='nrj', Iooffse
             f.suptitle(nrun.attrs['plot_title'])
         
         ax2 = plt.subplot(gs[1])
-        ax2.bar(bins_c, nosample['counts'], width=0.80*(bins_c[1]-bins_c[0]),
+        ax2.bar(nrj, nosample['counts'], width=0.80*(bins_c[1]-bins_c[0]),
                 color='C0', alpha=0.2)
         ax2.set_xlabel('Energy (eV)')
         ax2.set_ylabel('counts')
         plt.tight_layout()
     
-    return {'nrj':bins_c, 'muA':muA, 'sterrA':sterrA, 'sigmaA':nosample['sigmaA'],
+    return {'nrj':nrj, 'muA':muA, 'sterrA':sterrA, 'sigmaA':nosample['sigmaA'],
         'muIo':nosample['muIo'], 'counts':nosample['counts']}
 
 def xasxmcd(dataP, dataN):