diff --git a/utils/demo/makemodlenses.scr b/utils/demo/makemodlenses.scr
index 0f40dc96e539acd033b17510fa7a2881cef2833a..e97e3000d0e7bc41582b25775925b6efe0cd18cb 100755
--- a/utils/demo/makemodlenses.scr
+++ b/utils/demo/makemodlenses.scr
@@ -8,6 +8,6 @@ makemod file_base=model.su \
 	cp0=1500 ro0=1000 sizex=6000 sizez=2000 dx=$dx dz=$dx orig=-3000,0 \
 	intt=def x=-3000,-1200,-1000,-800,-500,-200,0,3000 z=850,850,650,600,620,700,850,850 poly=0 cp=2000 ro=1500 \
 	intt=def x=-3000,-1200,-1000,-800,-500,-200,0,3000 z=850,850,950,1000,1020,980,850,850 poly=0 cp=1500 ro=1000 \
-	verbose=4
+	reflectivity=1 verbose=4
 
 
diff --git a/utils/makemod.c b/utils/makemod.c
index d89c240bd382f851998d12d809b9c87049fa83f8..83e85f78c23f82a387e88dfb16fc37d9ddfa46bd 100644
--- a/utils/makemod.c
+++ b/utils/makemod.c
@@ -86,6 +86,7 @@ char *sdoc[] = {
   "   dtype=0 .................. diffractor type for diffr and randdf",
   " OUTPUT ",
   "   writeint=0 ............... interfaces as function of x (ext: _int)",
+  "   reflectivity=0 ........... compute reflectivity (ext: _rfl)",
   "   rayfile=0 ................ interfaces as function of x in ASCII file.mod",
   "   skip=5 ................... number of x position to skip in file_ray",
   "   example=0 ................ makes an example parameter file",
@@ -138,13 +139,13 @@ int main(int argc, char **argv)
 {
   FILE *fpint, *fpcp, *fpcs, *fpro;
   int   example, verbose, writeint, nb;
-  int	above, diffrwidth, dtype;
+  int	above, diffrwidth, dtype, reflectivity;
   int   Ngp, Ngs, Ngr, Np, Ns, Nr, Ng, Ni, Nv, Nvi, No, Noi;
   int   jint, jcount, j, ix, iz, nx, nz, nxp, nzp, *zp, nmaxx, nminx, optgrad, poly, gradt; 
   int	ncp, nro, ncs, nvel, skip, rayfile, store_int;
 	long lseed;
   size_t  nwrite;
-  float *data_out, orig[2], cp0, cs0, ro0;
+  float *data_out, orig[2], cp0, cs0, ro0, Z1, Z2;
   float	*x, *z, *var, *interface, **inter;
   float back[3], sizex, sizez, dx, dz;
   float **cp ,**cs, **ro, aver, gradlen, gradcp, gradcs, gradro;
@@ -210,6 +211,7 @@ int main(int argc, char **argv)
   if(!getparint("gradt", &gradt)) gradt = 1;
   if(!getparint("gradunit", &gradunit)) gradunit = 0;
   if(!getparint("writeint", &writeint)) writeint = 0;
+  if(!getparint("reflectivity", &reflectivity)) reflectivity = 0;
   if(!getparint("rayfile", &rayfile)) rayfile = 0;
   if(!getparint("skip", &skip)) skip = 5;
   if(!getparint("above", &above)) above=0;
@@ -654,6 +656,7 @@ int main(int argc, char **argv)
 		fpint = fopen(filename,"w");
 		assert(fpint != NULL);
 	}
+
   
   /* write P-velocities in file */
   strcpy(filename, file_base);
@@ -672,6 +675,37 @@ int main(int argc, char **argv)
     assert(nwrite == nz);
   }
   fclose(fpcp);
+
+  /* write reflectivity of the interfaces */
+  if (reflectivity == 1) {
+    strcpy(filename, file_base);
+    name_ext(filename, "_rfl");
+    fpro = fopen(filename,"w");
+    assert(fpro != NULL);
+    
+    for(ix = 0; ix < nx-1; ix++) {
+      for(iz = 0; iz < nz-1; iz++) {
+         Z1=gridro[ix][iz]*gridcp[ix][iz];
+         Z2=gridro[ix][iz+1]*gridcp[ix][iz+1];
+	     data_out[ix*nz+iz] = (Z2-Z1)/(Z2+Z1);
+      }
+	  data_out[ix*nz+nz-1] = 0.0;
+      nwrite = fwrite( &hdrs[ix], 1, TRCBYTES, fpro);
+      assert(nwrite == TRCBYTES);
+      nwrite = fwrite( &data_out[ix*nz], sizeof(float), nz, fpro);
+      assert(nwrite == nz);
+    }
+    ix = nx-1;
+    for(iz = 0; iz < nz; iz++) {
+	   data_out[ix*nz+iz] = 0.0;
+    }
+    nwrite = fwrite( &hdrs[ix], 1, TRCBYTES, fpro);
+    assert(nwrite == TRCBYTES);
+    nwrite = fwrite( &data_out[ix*nz], sizeof(float), nz, fpro);
+    assert(nwrite == nz);
+    fclose(fpro);
+  } /* end of writing reflectivity file */
+
   free2float(gridcp);
   
   /* write S-velocities in file */
@@ -715,6 +749,7 @@ int main(int argc, char **argv)
     free2float(gridro);
   } /* end of writing density file */
   
+  
   /* write depths of the interfaces */
   if (writeint == 1) {
     free(hdrs);