diff --git a/fdelmodc/fdelmodc b/fdelmodc/fdelmodc
index 749fd04edacc5f1be9c2f189e0f7cb729b7b0342..2490595cb11059d767c62d36f5e165bc82028adc 100755
Binary files a/fdelmodc/fdelmodc and b/fdelmodc/fdelmodc differ
diff --git a/marchenko/readShotData.c b/marchenko/readShotData.c
index 1e1e33c5aa34be3b35b800b3951f7f89a4213ba8..a619799113de01c77af1a667cb060e3de055731b 100644
--- a/marchenko/readShotData.c
+++ b/marchenko/readShotData.c
@@ -16,7 +16,8 @@ int optncr(int n);
 void cc1fft(complex *data, int n, int sign);
 void rc1fft(float *rdata, complex *cdata, int n, int sign);
 
-int readShotData(char *filename, float *xrcv, float *xsrc, float *zsrc, int *xnx, complex *cdata, int nw, int nw_low, int nshots, int nx, int nxs, float fxsb, float dxs, int ntfft, int mode, float scale, float tsq, int reci, int *nshots_r, int *isxcount, int *reci_xsrc,  int *reci_xrcv, float *ixmask, int verbose)
+int readShotData(char *filename, float *xrcv, float *xsrc, float *zsrc, int *xnx, complex *cdata, int nw, int nw_low, int nshots,
+int nx, int nxs, float fxsb, float dxs, int ntfft, int mode, float scale, float tsq, float Q, float f0, int reci, int *nshots_r, int *isxcount, int *reci_xsrc,  int *reci_xrcv, float *ixmask, int verbose)
 {
     FILE *fp;
     segy hdr;
@@ -102,6 +103,13 @@ int readShotData(char *filename, float *xrcv, float *xsrc, float *zsrc, int *xnx
                 }
             }
 
+            /* Q-correction */
+            if (Q != 0.0 && f0 != 0.0) {
+                for (iw=0; iw<nt; iw++) {
+                    trace[iw] *= expf(((dt*iw)*M_PI*f0)/Q);
+                }
+            }
+
             /* transform to frequency domain */
             if (ntfft > hdr.ns) 
                 memset( &trace[nt-1], 0, sizeof(float)*(ntfft-nt) );