diff --git a/fdelmodc/decomposition.c b/fdelmodc/decomposition.c
index 6558de07b5a75d82e89429a7c5853703993a96dd..3b487787b5323c633c5dfcb15dfbcc83f888f53d 100644
--- a/fdelmodc/decomposition.c
+++ b/fdelmodc/decomposition.c
@@ -5,7 +5,6 @@
  *   GEOPHYSICS, VOL. 63, NO. 4 (JULY-AUGUST 1998); P. 1795–1798
  *
  *  Created by Jan Thorbecke on 17/03/2014.
- *  Copyright 2014 TU Delft. All rights reserved.
  *
  */
 
diff --git a/fdelmodc/getParameters.c b/fdelmodc/getParameters.c
index bef3b7952088e86f67b4f549ba02e8b08f941b16..0c5d4e18e555ae0529c7c5d358edbf276d6d3b92 100644
--- a/fdelmodc/getParameters.c
+++ b/fdelmodc/getParameters.c
@@ -1064,7 +1064,7 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr
 	rec->skipdt=NINT(dtrcv/dt);
 	dtrcv = mod->dt*rec->skipdt;
 	if (!getparfloat("rec_delay",&rdelay)) rdelay=0.0;
-	if (!getparint("rec_ntsam",&rec->nt)) rec->nt=NINT((mod->tmod)/dtrcv)+1;
+	if (!getparint("rec_ntsam",&rec->nt)) rec->nt=NINT((mod->tmod-rdelay)/dtrcv)+1;
 	if (!getparint("rec_int_p",&rec->int_p)) rec->int_p=0;
 	if (!getparint("rec_int_vx",&rec->int_vx)) rec->int_vx=0;
 	if (!getparint("rec_int_vz",&rec->int_vz)) rec->int_vz=0;
@@ -1072,7 +1072,7 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr
 	if (!getparint("scale",&rec->scale)) rec->scale=0;
 	if (!getparfloat("dxspread",&dxspread)) dxspread=0;
 	if (!getparfloat("dzspread",&dzspread)) dzspread=0;
-	rec->nt=MIN(rec->nt, NINT((mod->tmod)/dtrcv)+1);
+	rec->nt=MIN(rec->nt, NINT((mod->tmod-rdelay)/dtrcv)+1);
 
 /* allocation of receiver arrays is done in recvPar */
 /*
diff --git a/utils/freqwave.c b/utils/freqwave.c
index 156299e18ff222943be57597663f57e906da725a..d5c894c7481eeee668e0959ebe7bdfb0f971ebd2 100644
--- a/utils/freqwave.c
+++ b/utils/freqwave.c
@@ -33,470 +33,468 @@ void hilbertTrans(float *data, int nsam);
 
 void freqwave(float *wave, int nt, float dt, float fp, float fmin, float flef, float frig, float fmax, float t0, float db, int shift, int cm, int cn, char *w, float scale, int scfft, int inverse, float eps, int verbose)
 {
-	int    	it, iof, nfreq, nf, i, j, sign, optn, stored;
-	int		ifmin1, ifmin2, ifmax1, ifmax2;
-	float  	df, fact, alfa, f, max, freq, att, ampl, phase;
-	float  	tt, dum;
-	float	*rwave, *amplitude;
-	complex	*cwave, tmp, *mpwave;
-
-	optn	= optncr(nt);
-	nfreq	= 1+(optn/2);
-	df		= 1.0/(dt*optn);
-	iof 	= MAX(NINT(fmax/df), NINT(fp/df));
-	att		= pow(10.0, db/20.0);
-
-	if (iof > nfreq) verr("characterizing frequency aliased");
-
-	cwave 	= (complex *)malloc(nfreq*sizeof(complex));
-	rwave 	= (float *)malloc((optn+2)*sizeof(float));
-
-	stored = 0;
-	
-	if (strstr(w, "g0") != NULL) {
-		i = NINT(fmax/df);
-		for (iof = i; iof > 0; iof--) {
-			f = iof*df;
-			if((gauss0freq(fmax, f) < att)&&(stored != 1)) {
-				freq = f;
-				stored = 1;
-			}
-		}
-		if (stored == 0) verr("No valid wavelet found.");
-		stored = 0;
-		if (shift == 1) {
-			for (i = 0; i < optn; i++) {
-				if ((fabs(gauss0time((float)i*dt,freq))<1e-3)&&(stored != 1)) {
-					t0 = (float)i*dt;
-					stored = 1;
-				}
-			}
-		}
-		for (iof = 0; iof < nfreq; iof++) {
-			f = iof*df;
-			fact = f*f/(freq*freq);
-			fact = exp(-fact);
-			cwave[iof].r = fact*cos(2.0*M_PI*f*t0);
-			cwave[iof].i = -fact*sin(2.0*M_PI*f*t0);
-		}
-		if (verbose >= 1) {
-			vmess("Gaussian wavelet");
-			vmess("----------------");
-			vmess("Number of time samples .. = %d", nt);
-			vmess("time step ............... = %f (s)", dt);
-			vmess("maximum frequency at  ... = %f (Hz)",fmax);
-			vmess("with attenutation ....... = %f", att);
-			vmess("time shift .............. = %f (s)", t0);
-		}
-	}
-	else if (strstr(w, "g1") != NULL) {
-		if (fp < 0.0) {
-			i = NINT(fmax/df);
-			for (iof = i; iof > 0; iof--) {
-				f = iof*df;
-				if((gauss1freq(fmax, f) < att)&&(stored != 1)) {
-					freq = f;
-					stored = 1;
-				}
-			}
-			if (stored == 0) verr("No valid wavelet found.");
-		}
-		else freq = fp;
-		alfa = sqrt(2.0)*freq;
-		stored = 0;
-
-		if (shift == 1) {
-			for (i = 1; i < optn; i++) {
-				tt=(float)i*dt;
-				dum = fabs(gauss1time(tt,freq))+fabs(gauss1time((tt+dt),freq));
-				if ((dum<1e-4)&&(stored != 1)) {
-					t0 = (float)i*dt;
-					stored = 1;
-				}
-			}
-		}
-
-		for (iof = 0; iof < nfreq; iof++) {
-			f = iof*df;
-			fact = f*f/(alfa*alfa);
-			fact = f*exp(-fact)/alfa;
-			cwave[iof].r = fact*sin(2.0*M_PI*f*t0);
-			cwave[iof].i = fact*cos(2.0*M_PI*f*t0);
-		}
-		if (verbose >= 1) {
-			vmess("Derivative of Gaussian wavelet");
-			vmess("------------------------------");
-			vmess("Number of time samples .. = %d",nt);
-			vmess("time step ............... = %f (s)",dt);
-			if (fp < 0) {
-				vmess("maximum frequency at  ... = %f (Hz)",fmax);
-				vmess("with attenutation ....... = %f", att);
-			}
-			vmess("frequency peak at ....... = %f Hz", freq);
-			vmess("time shift .............. = %f (s)", t0);
-		}
-	}
-	else if (strstr(w, "cs") != NULL) {
-		freq = acos((float)(cm-cn)/(float)(cm+cn))/(2.0*M_PI*dt);
-		fact = 1.0/(cos(freq*2.0*M_PI*dt)+sin(freq*2.0*M_PI*dt));
-		if (shift == 1) t0 = (cn+cm)*dt;
-
-		for (iof = 0; iof < nfreq; iof++) {
-			f = 2.0*M_PI*iof/(float)nt;
-			ampl = pow((1.0-cos(f)), cn/2.0)*pow((1.0+cos(f)), cm/2.0);
-			phase = atan((fact*sin(f))/(1.0+fact*cos(f)));
-			cwave[iof].r = ampl*cos(phase-f*nt*t0);
-			cwave[iof].i = ampl*sin(phase-f*nt*t0);
-		}
-		if (verbose >= 1) {
-			vmess("Neidell Type of wavelet");
-			vmess("-----------------------");
-			vmess("Number of time samples .. = %d", nt);
-			vmess("time step ............... = %f (s)", dt);
-			vmess("frequency peak at ....... = %f Hz", freq);
-			vmess("time shift .............. = %f (s)", t0);
-		}
-	}
-	else if (strstr(w, "fw") != NULL) {
-		ifmin1 = (int) (fmin/df);
-		ifmin2 = (int) (flef/df);
-		ifmax2 = (int) (frig/df);
-		ifmax1 = (int) (fmax/df);
-		for (j = 0; j < ifmin1; j++) {
-			cwave[j].r = 0.0;
-			cwave[j].i = 0.0;
-		}
-		for (j = ifmin1; j < ifmin2; j++) {
-			cwave[j].r  = (cos(M_PI*(j-ifmin2)/(ifmin1-ifmin2))+1.0)/2.0;
-			cwave[j].i = 0.0;
-		}
-		for (j = ifmin2; j < ifmax2; j++) {
-			cwave[j].r = 1.0;
-			cwave[j].i = 0.0;
-		}
-		for (j = ifmax2; j < ifmax1; j++) {
-			cwave[j].r  =(cos(M_PI*(j-ifmax2)/(ifmax1-ifmax2))+1.0)/2.0;
-			cwave[j].i = 0.0;
-		}
-		for (j = ifmax1; j < nfreq; j++) {
-			cwave[j].r = 0.0;
-			cwave[j].i = 0.0;
-		}
-		if (shift == 1) {
-		    sign = 1;
-		    cr1fft(cwave, rwave, optn, sign);
+    int        it, iof, nfreq, nf, i, j, sign, optn, stored;
+    int        ifmin1, ifmin2, ifmax1, ifmax2;
+    float      df, fact, alfa, f, max, freq, att, ampl, phase;
+    float      tt, dum;
+    float    *rwave, *amplitude;
+    complex    *cwave, tmp, *mpwave;
+
+    optn    = optncr(nt);
+    nfreq    = 1+(optn/2);
+    df        = 1.0/(dt*optn);
+    iof     = MAX(NINT(fmax/df), NINT(fp/df));
+    att        = pow(10.0, db/20.0);
+
+    if (iof > nfreq) verr("characterizing frequency aliased");
+
+    cwave     = (complex *)malloc(nfreq*sizeof(complex));
+    rwave     = (float *)malloc((optn+2)*sizeof(float));
+
+    stored = 0;
+    
+    if (strstr(w, "g0") != NULL) {
+        i = NINT(fmax/df);
+        for (iof = i; iof > 0; iof--) {
+            f = iof*df;
+            if((gauss0freq(fmax, f) < att)&&(stored != 1)) {
+                freq = f;
+                stored = 1;
+            }
+        }
+        if (stored == 0) verr("No valid wavelet found.");
+        stored = 0;
+        if (shift == 1) {
+            for (i = 0; i < optn; i++) {
+                if ((fabs(gauss0time((float)i*dt,freq))<1e-3)&&(stored != 1)) {
+                    t0 = (float)i*dt;
+                    stored = 1;
+                }
+            }
+        }
+        for (iof = 0; iof < nfreq; iof++) {
+            f = iof*df;
+            fact = f*f/(freq*freq);
+            fact = exp(-fact);
+            cwave[iof].r = fact*cos(2.0*M_PI*f*t0);
+            cwave[iof].i = -fact*sin(2.0*M_PI*f*t0);
+        }
+        if (verbose >= 1) {
+            vmess("Gaussian wavelet");
+            vmess("----------------");
+            vmess("Number of time samples .. = %d", nt);
+            vmess("time step ............... = %f (s)", dt);
+            vmess("maximum frequency at  ... = %f (Hz)",fmax);
+            vmess("with attenutation ....... = %f", att);
+            vmess("time shift .............. = %f (s)", t0);
+        }
+    }
+    else if (strstr(w, "g1") != NULL) {
+        if (fp < 0.0) {
+            i = NINT(fmax/df);
+            for (iof = i; iof > 0; iof--) {
+                f = iof*df;
+                if((gauss1freq(fmax, f) < att)&&(stored != 1)) {
+                    freq = f;
+                    stored = 1;
+                }
+            }
+            if (stored == 0) verr("No valid wavelet found.");
+        }
+        else freq = fp;
+        alfa = sqrt(2.0)*freq;
+        stored = 0;
+
+        if (shift == 1) {
+            for (i = 1; i < optn; i++) {
+                tt=(float)i*dt;
+                dum = fabs(gauss1time(tt,freq))+fabs(gauss1time((tt+dt),freq));
+                if ((dum<1e-4)&&(stored != 1)) {
+                    t0 = (float)i*dt;
+                    stored = 1;
+                }
+            }
+        }
+
+        for (iof = 0; iof < nfreq; iof++) {
+            f = iof*df;
+            fact = f*f/(alfa*alfa);
+            fact = f*exp(-fact)/alfa;
+            cwave[iof].r = fact*sin(2.0*M_PI*f*t0);
+            cwave[iof].i = fact*cos(2.0*M_PI*f*t0);
+        }
+        if (verbose >= 1) {
+            vmess("Derivative of Gaussian wavelet");
+            vmess("------------------------------");
+            vmess("Number of time samples .. = %d",nt);
+            vmess("time step ............... = %f (s)",dt);
+            if (fp < 0) {
+                vmess("maximum frequency at  ... = %f (Hz)",fmax);
+                vmess("with attenutation ....... = %f", att);
+            }
+            vmess("frequency peak at ....... = %f Hz", freq);
+            vmess("time shift .............. = %f (s)", t0);
+        }
+    }
+    else if (strstr(w, "cs") != NULL) {
+        freq = acos((float)(cm-cn)/(float)(cm+cn))/(2.0*M_PI*dt);
+        fact = 1.0/(cos(freq*2.0*M_PI*dt)+sin(freq*2.0*M_PI*dt));
+        if (shift == 1) t0 = (cn+cm)*dt;
+
+        for (iof = 0; iof < nfreq; iof++) {
+            f = 2.0*M_PI*iof/(float)nt;
+            ampl = pow((1.0-cos(f)), cn/2.0)*pow((1.0+cos(f)), cm/2.0);
+            phase = atan((fact*sin(f))/(1.0+fact*cos(f)));
+            cwave[iof].r = ampl*cos(phase-f*nt*t0);
+            cwave[iof].i = ampl*sin(phase-f*nt*t0);
+        }
+        if (verbose >= 1) {
+            vmess("Neidell Type of wavelet");
+            vmess("-----------------------");
+            vmess("Number of time samples .. = %d", nt);
+            vmess("time step ............... = %f (s)", dt);
+            vmess("frequency peak at ....... = %f Hz", freq);
+            vmess("time shift .............. = %f (s)", t0);
+        }
+    }
+    else if (strstr(w, "fw") != NULL) {
+        ifmin1 = (int) (fmin/df);
+        ifmin2 = (int) (flef/df);
+        ifmax2 = (int) (frig/df);
+        ifmax1 = (int) (fmax/df);
+        for (j = 0; j < ifmin1; j++) {
+            cwave[j].r = 0.0;
+            cwave[j].i = 0.0;
+        }
+        for (j = ifmin1; j < ifmin2; j++) {
+            cwave[j].r  = (cos(M_PI*(j-ifmin2)/(ifmin1-ifmin2))+1.0)/2.0;
+            cwave[j].i = 0.0;
+        }
+        for (j = ifmin2; j < ifmax2; j++) {
+            cwave[j].r = 1.0;
+            cwave[j].i = 0.0;
+        }
+        for (j = ifmax2; j < ifmax1; j++) {
+            cwave[j].r  =(cos(M_PI*(j-ifmax2)/(ifmax1-ifmax2))+1.0)/2.0;
+            cwave[j].i = 0.0;
+        }
+        for (j = ifmax1; j < nfreq; j++) {
+            cwave[j].r = 0.0;
+            cwave[j].i = 0.0;
+        }
+        if (shift == 1) {
+            sign = 1;
+            cr1fft(cwave, rwave, optn, sign);
             max = rwave[0]*rwave[0];
-			for (i = 1; i < optn; i++) {
+            for (i = 1; i < optn; i++) {
                 if (rwave[i] < 0.0) { it=i; break;}
             }
             it = it;
             dum = 0.0;
-			for (j = 0; j < it; j++) 
+            for (j = 0; j < it; j++) 
                 dum += fabs(rwave[j]);
             max = dum;
-			for (i = 1; i < optn/2; i++) {
+            for (i = 1; i < optn/2; i++) {
                 dum = dum - fabs(rwave[i-1]) + fabs(rwave[i+it-1]);
-                //fprintf(stderr,"dum=%f i=%d\n", dum, i);
-				if ((dum)>(0.03*max*att/it)) {
-					t0 = (float)i*dt;
-				}
-			}
-		}
-		for (iof = 0; iof < nfreq; iof++) {
-			f = iof*df;
-			tmp.r = cwave[iof].r*cos(2.0*M_PI*f*t0);
-			tmp.i = -cwave[iof].r*sin(2.0*M_PI*f*t0);
-			cwave[iof].r = tmp.r;
-			cwave[iof].i = tmp.i;
+                if ((dum)>(0.03*max*att/it)) {
+                    t0 = (float)i*dt;
+                }
+            }
+        }
+        for (iof = 0; iof < nfreq; iof++) {
+            f = iof*df;
+            tmp.r = cwave[iof].r*cos(2.0*M_PI*f*t0);
+            tmp.i = -cwave[iof].r*sin(2.0*M_PI*f*t0);
+            cwave[iof].r = tmp.r;
+            cwave[iof].i = tmp.i;
 /* older version has multiplication with dt changed in april 2014
-			cwave[iof].r = dt*tmp.r;
-			cwave[iof].i = dt*tmp.i;
-*/
-		}
-
-		if (verbose >= 1) {
-			vmess("Flat spectrum wavelet");
-			vmess("---------------------");
-			vmess("Number of time samples .. = %d", nt);
-			vmess("time step ............... = %f (s)", dt);
-			vmess("maximum frequency ....... = %f Hz", fmax);
-			vmess("left cut-off frequency .. = %f Hz", flef);
-			vmess("right cut-off frequency . = %f Hz", frig);
-			vmess("minimum frequency ....... = %f Hz", fmin);
-			vmess("time shift .............. = %f (s)", t0);
-		}
-
-	}
-	else if (strstr(w, "mon") != NULL) {
-		for (j = 0; j < nfreq; j++) {
-			cwave[j].r = 0.0;
-			cwave[j].i = 0.0;
-		}
-		i = NINT(fp/df);
-		cwave[i].r = 0.5*cos(2.0*M_PI*i*df*t0);
-		cwave[i].i = -0.5*sin(2.0*M_PI*i*df*t0);
-
-		if (verbose >= 1) {
-			vmess("Monochromatic wavelet");
-			vmess("---------------------");
-			vmess("Number of time samples .. = %d", nt);
-			vmess("time step ............... = %e (s)", dt);
-			vmess("frequency ............... = %f Hz", i*df);
-			vmess("time shift .............. = %e (s)", t0);
-		}
-	}
-	else if (strstr(w, "sqrtg2") != NULL) {
-		if (fp < 0.0) {
-			i = NINT(fmax/(2.0*df));
-			for (iof = i; iof > 0; iof--) {
-				f = iof*df;
-				if((gauss2freq(fmax, f) < att)&&(stored != 1)) {
-					freq = f;
-					stored = 1;
-				}
-			}
-			if (stored == 0) verr("No valid wavelet found.");
-		}
-		else freq = fp;
-		stored = 0;
-
-		if (shift == 1) {
-			for (i = 0; i < optn; i++) {
-				tt=(float)i*dt;
-				dum = fabs(gauss2time(tt,freq))+fabs(gauss2time((tt+dt),freq));
-				if ((dum<1e-3)&&(stored != 1)) {
-					t0 = (float)i*dt;
-					stored = 1;
-				}
-			}
-		}
-				
-		for (iof = 0; iof < nfreq; iof++) {
-			f = iof*df;
-			fact = f/(freq);
-			fact *= exp(-0.5*fact*fact);
-			cwave[iof].r = fact*cos(2.0*M_PI*f*t0);
-			cwave[iof].i = -fact*sin(2.0*M_PI*f*t0);
-		}
-		if (verbose >= 1) {
-			vmess("Sqrt of Second derivative of Gaussian wavelet");
-			vmess("-------------------------------------");
-			vmess("Number of time samples .. = %d", nt);
-			vmess("time step ............... = %f (s)", dt);
-			if (fp < 0) {
-				vmess("maximum frequency at  ... = %f (Hz)",fmax);
-				vmess("with attenutation ....... = %f", att);
-			}
-			vmess("frequency peak at ....... = %f Hz", freq);
-			vmess("time shift .............. = %f (s)", t0);
-		}
-	}
-	else  {
-		if (fp < 0.0) {
-			i = NINT(fmax/(2.0*df));
-			for (iof = i; iof > 0; iof--) {
-				f = iof*df;
-				if((gauss2freq(fmax, f) < att)&&(stored != 1)) {
-					freq = f;
-					stored = 1;
-				}
-			}
-			if (stored == 0) verr("No valid wavelet found.");
-		}
-		else freq = fp;
-		stored = 0;
-
-		if (shift == 1) {
-			for (i = 0; i < optn; i++) {
-				tt=(float)i*dt;
-				dum = fabs(gauss2time(tt,freq))+fabs(gauss2time((tt+dt),freq));
-				if ((dum<1e-3)&&(stored != 1)) {
-					t0 = (float)i*dt;
-					stored = 1;
-				}
-			}
-		}
+            cwave[iof].r = dt*tmp.r;
+            cwave[iof].i = dt*tmp.i; */
+        }
+
+        if (verbose >= 1) {
+            vmess("Flat spectrum wavelet");
+            vmess("---------------------");
+            vmess("Number of time samples .. = %d", nt);
+            vmess("time step ............... = %f (s)", dt);
+            vmess("maximum frequency ....... = %f Hz", fmax);
+            vmess("left cut-off frequency .. = %f Hz", flef);
+            vmess("right cut-off frequency . = %f Hz", frig);
+            vmess("minimum frequency ....... = %f Hz", fmin);
+            vmess("time shift .............. = %f (s)", t0);
+        }
+
+    }
+    else if (strstr(w, "mon") != NULL) {
+        for (j = 0; j < nfreq; j++) {
+            cwave[j].r = 0.0;
+            cwave[j].i = 0.0;
+        }
+        i = NINT(fp/df);
+        cwave[i].r = 0.5*cos(2.0*M_PI*i*df*t0);
+        cwave[i].i = -0.5*sin(2.0*M_PI*i*df*t0);
+
+        if (verbose >= 1) {
+            vmess("Monochromatic wavelet");
+            vmess("---------------------");
+            vmess("Number of time samples .. = %d", nt);
+            vmess("time step ............... = %e (s)", dt);
+            vmess("frequency ............... = %f Hz", i*df);
+            vmess("time shift .............. = %e (s)", t0);
+        }
+    }
+    else if (strstr(w, "sqrtg2") != NULL) {
+        if (fp < 0.0) {
+            i = NINT(fmax/(2.0*df));
+            for (iof = i; iof > 0; iof--) {
+                f = iof*df;
+                if((gauss2freq(fmax, f) < att)&&(stored != 1)) {
+                    freq = f;
+                    stored = 1;
+                }
+            }
+            if (stored == 0) verr("No valid wavelet found.");
+        }
+        else freq = fp;
+        stored = 0;
+
+        if (shift == 1) {
+            for (i = 0; i < optn; i++) {
+                tt=(float)i*dt;
+                dum = fabs(gauss2time(tt,freq))+fabs(gauss2time((tt+dt),freq));
+                if ((dum<1e-3)&&(stored != 1)) {
+                    t0 = (float)i*dt;
+                    stored = 1;
+                }
+            }
+        }
+                
         for (iof = 0; iof < nfreq; iof++) {
-    	    f = iof*df;
-    		fact = f*f/(freq*freq);
-        	fact *= exp(-fact);
-    	    cwave[iof].r = fact*cos(2.0*M_PI*f*t0);
-    	    cwave[iof].i = -fact*sin(2.0*M_PI*f*t0);
-        }
-		if (verbose >= 1) {
-			vmess("Second derivative of Gaussian wavelet");
-			vmess("-------------------------------------");
-			vmess("Number of time samples .. = %d", nt);
-			vmess("time step ............... = %f (s)", dt);
-			if (fp < 0) {
-				vmess("maximum frequency at  ... = %f (Hz)",fmax);
-				vmess("with attenutation ....... = %f", att);
-			}
-			vmess("frequency peak at ....... = %f Hz", freq);
-			vmess("time shift .............. = %f (s)", t0);
-		}
-	}
+            f = iof*df;
+            fact = f/(freq);
+            fact *= exp(-0.5*fact*fact);
+            cwave[iof].r = fact*cos(2.0*M_PI*f*t0);
+            cwave[iof].i = -fact*sin(2.0*M_PI*f*t0);
+        }
+        if (verbose >= 1) {
+            vmess("Sqrt of Second derivative of Gaussian wavelet");
+            vmess("-------------------------------------");
+            vmess("Number of time samples .. = %d", nt);
+            vmess("time step ............... = %f (s)", dt);
+            if (fp < 0) {
+                vmess("maximum frequency at  ... = %f (Hz)",fmax);
+                vmess("with attenutation ....... = %f", att);
+            }
+            vmess("frequency peak at ....... = %f Hz", freq);
+            vmess("time shift .............. = %f (s)", t0);
+        }
+    }
+    else  {
+        if (fp < 0.0) {
+            i = NINT(fmax/(2.0*df));
+            for (iof = i; iof > 0; iof--) {
+                f = iof*df;
+                if((gauss2freq(fmax, f) < att)&&(stored != 1)) {
+                    freq = f;
+                    stored = 1;
+                }
+            }
+            if (stored == 0) verr("No valid wavelet found.");
+        }
+        else freq = fp;
+        stored = 0;
+
+        if (shift == 1) {
+            for (i = 0; i < optn; i++) {
+                tt=(float)i*dt;
+                dum = fabs(gauss2time(tt,freq))+fabs(gauss2time((tt+dt),freq));
+                if ((dum<1e-3)&&(stored != 1)) {
+                    t0 = (float)i*dt;
+                    stored = 1;
+                }
+            }
+        }
+        for (iof = 0; iof < nfreq; iof++) {
+            f = iof*df;
+            fact = f*f/(freq*freq);
+            fact *= exp(-fact);
+            cwave[iof].r = fact*cos(2.0*M_PI*f*t0);
+            cwave[iof].i = -fact*sin(2.0*M_PI*f*t0);
+        }
+        if (verbose >= 1) {
+            vmess("Second derivative of Gaussian wavelet");
+            vmess("-------------------------------------");
+            vmess("Number of time samples .. = %d", nt);
+            vmess("time step ............... = %f (s)", dt);
+            if (fp < 0) {
+                vmess("maximum frequency at  ... = %f (Hz)",fmax);
+                vmess("with attenutation ....... = %f", att);
+            }
+            vmess("frequency peak at ....... = %f Hz", freq);
+            vmess("time shift .............. = %f (s)", t0);
+        }
+    }
     if (inverse==1) {
         vmess("inverse with eps  ....... = %f (s)", eps);
         for (iof = 1; iof < nfreq; iof++) {
             fact = cwave[iof].r*cwave[iof].r + cwave[iof].i*cwave[iof].i;
-    	    cwave[iof].r = cwave[iof].r/(fact+eps);
-    	    cwave[iof].i = -cwave[iof].i/(fact+eps);
+            cwave[iof].r = cwave[iof].r/(fact+eps);
+            cwave[iof].i = -cwave[iof].i/(fact+eps);
         }
         cwave[0].r = 0.0;
         cwave[0].i = 0.0;
     }
 
-	/* minimum phase calculation */
+    /* minimum phase calculation */
     if (inverse==2) {
         vmess("minimum phase calculation ");
-		nf = (2*(nfreq-1));
-		mpwave = (complex *)calloc(nf,sizeof(complex));
-		
-		fprintf(stderr,"nf=%d\n", nf);
-		amplitude = (float *)calloc(2*nf,sizeof(float));
+        nf = (2*(nfreq-1));
+        mpwave = (complex *)calloc(nf,sizeof(complex));
+        
+        fprintf(stderr,"nf=%d\n", nf);
+        amplitude = (float *)calloc(2*nf,sizeof(float));
         for (iof = 0; iof < nfreq; iof++) {
-			fact = sqrt(cwave[iof].r*cwave[iof].r + cwave[iof].i*cwave[iof].i);
-			if (fact > 0.0) amplitude[iof] = log(fact);
-			else amplitude[iof] = 0.0;
+            fact = sqrt(cwave[iof].r*cwave[iof].r + cwave[iof].i*cwave[iof].i);
+            if (fact > 0.0) amplitude[iof] = log(fact);
+            else amplitude[iof] = 0.0;
             amplitude[nf+iof] = fact;
-		}
-		hilbertTrans(amplitude, nf);
+        }
+        hilbertTrans(amplitude, nf);
         for (iof = 0; iof < nfreq; iof++) {
-			fact = amplitude[nf+iof];
-			fprintf(stderr,"amplitude[%d] = %f phase = %f\n", iof, fact, amplitude[iof]);
-			if (fact != 0.0) {
-    	    	mpwave[iof].r = (float) fact*cos(amplitude[iof]);
-    	    	mpwave[iof].i = (float) -fact*sin(amplitude[iof]);
-			}
-			else { 
-				mpwave[iof].r=0.0;
-				mpwave[iof].i=0.0;
-			}
-		}
+            fact = amplitude[nf+iof];
+            fprintf(stderr,"amplitude[%d] = %f phase = %f\n", iof, fact, amplitude[iof]);
+            if (fact != 0.0) {
+                mpwave[iof].r = (float) fact*cos(amplitude[iof]);
+                mpwave[iof].i = (float) -fact*sin(amplitude[iof]);
+            }
+            else { 
+                mpwave[iof].r=0.0;
+                mpwave[iof].i=0.0;
+            }
+        }
         for (iof = nf-1; iof > nfreq; iof--) {
-			mpwave[iof].r=mpwave[nf-iof].r;
-			mpwave[iof].i=-1.0*mpwave[nf-iof].i;
-		}
-		cc1fft(mpwave, nf, 1);
-		for (i = 0; i < nt; i++) rwave[i] = mpwave[i].r;
-
-		free(amplitude);
-		free(mpwave);
+            mpwave[iof].r=mpwave[nf-iof].r;
+            mpwave[iof].i=-1.0*mpwave[nf-iof].i;
+        }
+        cc1fft(mpwave, nf, 1);
+        for (i = 0; i < nt; i++) rwave[i] = mpwave[i].r;
+
+        free(amplitude);
+        free(mpwave);
     }
-	else {
-		sign = 1;
-		cr1fft(cwave, rwave, optn, sign);
-	}
-
-	max = rwave[0];
-	for (i = 0; i < nt; i++) if (rwave[i] > max) max = rwave[i];
-	max = scale/max;
-	if (scale == 0) {
-		if (scfft == 0) max = 1.0/(float)nt;
-		else max = df;
-	}
-	//fprintf(stderr,"scaling factor back FFT=%e\n", max);
-	for (i = 0; i < nt; i++) wave[i]= rwave[i]*max;
-
-	free(cwave);
-	free(rwave);
-
-	return;
+    else {
+        sign = 1;
+        cr1fft(cwave, rwave, optn, sign);
+    }
+
+    max = rwave[0];
+    for (i = 0; i < nt; i++) if (rwave[i] > max) max = rwave[i];
+    max = scale/max;
+    if (scale == 0) {
+        if (scfft == 0) max = 1.0/(float)nt;
+        else max = df;
+    }
+    //fprintf(stderr,"scaling factor back FFT=%e\n", max);
+    for (i = 0; i < nt; i++) wave[i]= rwave[i]*max;
+
+    free(cwave);
+    free(rwave);
+
+    return;
 }
 
 float gauss2time(float t, float f)
 {
-	float value;
+    float value;
 
-	value = ((1.0-2.0*M_PI*M_PI*f*f*t*t)*exp(-M_PI*M_PI*f*f*t*t));
-	return value;
+    value = ((1.0-2.0*M_PI*M_PI*f*f*t*t)*exp(-M_PI*M_PI*f*f*t*t));
+    return value;
 }
 
 float gauss1time(float t, float f)
 {
-	float value;
+    float value;
 
-	value = (-t*exp(-M_PI*M_PI*f*f*t*t))*(sqrt(2.0)*f*M_PI*exp(0.5));
-	return value;
+    value = (-t*exp(-M_PI*M_PI*f*f*t*t))*(sqrt(2.0)*f*M_PI*exp(0.5));
+    return value;
 }
 
 float gauss0time(float t, float f)
 {
-	float value;
+    float value;
 
-	value = exp(-M_PI*M_PI*f*f*t*t);
-	return value;
+    value = exp(-M_PI*M_PI*f*f*t*t);
+    return value;
 }
 
 float gauss2freq(float f, float freq)
 {
-	float 	value;
+    float     value;
 
-	value = f*f/(freq*freq);
-	value *= exp(1.0)*exp(-value);
+    value = f*f/(freq*freq);
+    value *= exp(1.0)*exp(-value);
 
-	return value;
+    return value;
 }
 
 float gauss1freq(float f, float freq)
 {
-	float 	value;
+    float     value;
 
-	value = f*f/(2.0*freq*freq);
-	value = sqrt(2.0*exp(1))*f*exp(-value)/(sqrt(2.0)*freq);
+    value = f*f/(2.0*freq*freq);
+    value = sqrt(2.0*exp(1))*f*exp(-value)/(sqrt(2.0)*freq);
 
-	return value;
+    return value;
 }
 
 float gauss0freq(float f, float freq)
 {
-	float 	value;
+    float     value;
 
-	value = f*f/(freq*freq);
-	value = exp(-value);
+    value = f*f/(freq*freq);
+    value = exp(-value);
 
-	return value;
+    return value;
 }
 
 
 
 void hilbertTrans(float *data, int nsam)
 {
-	int     optn, j, sign, nfreq;
-	float   scale;
-	complex *cdata;
-
-	optn = optncr(nsam);
-	nfreq = optn/2+1;
-	fprintf(stderr,"Hilbert optn=%d nsam=%d nfreq=%d\n", optn, nsam, nfreq);
-	cdata = (complex *)malloc(optn*sizeof(complex));
-	if (cdata == NULL) verr("memory allocation error for cdata");
-
-	for(j = 0; j < nsam; j++){
-		cdata[j].r = data[j];
-		cdata[j].i = 0.0;
-	}
-	for(j = nsam; j < optn; j++){
-		cdata[j].r = 0.0;
-		cdata[j].i = 0.0;
-	}
-	sign = -1;
-	cc1fft(&cdata[0], optn, sign);
-
-	for(j = nfreq; j < optn; j++){
-		cdata[j].r = 0.0;
-		cdata[j].i = 0.0;
-	}
-
-	sign = 1;
-	cc1fft(&cdata[0], optn, sign);
-
-	scale= 1.0/(float)optn;
-	for (j = 0 ; j < nsam ; j++) data[j] = cdata[j].i*scale;
-
-	free(cdata);
-
-	return;
+    int     optn, j, sign, nfreq;
+    float   scale;
+    complex *cdata;
+
+    optn = optncr(nsam);
+    nfreq = optn/2+1;
+    fprintf(stderr,"Hilbert optn=%d nsam=%d nfreq=%d\n", optn, nsam, nfreq);
+    cdata = (complex *)malloc(optn*sizeof(complex));
+    if (cdata == NULL) verr("memory allocation error for cdata");
+
+    for(j = 0; j < nsam; j++){
+        cdata[j].r = data[j];
+        cdata[j].i = 0.0;
+    }
+    for(j = nsam; j < optn; j++){
+        cdata[j].r = 0.0;
+        cdata[j].i = 0.0;
+    }
+    sign = -1;
+    cc1fft(&cdata[0], optn, sign);
+
+    for(j = nfreq; j < optn; j++){
+        cdata[j].r = 0.0;
+        cdata[j].i = 0.0;
+    }
+
+    sign = 1;
+    cc1fft(&cdata[0], optn, sign);
+
+    scale= 1.0/(float)optn;
+    for (j = 0 ; j < nsam ; j++) data[j] = cdata[j].i*scale;
+
+    free(cdata);
+
+    return;
 }