diff --git a/postprocessor/burn7.cpp b/postprocessor/burn7.cpp
index ae273f94d347732a802b96a11474d8404204fc14..8fd10f4262b077c4b9f3f43c24d4b747f60d87fd 100644
--- a/postprocessor/burn7.cpp
+++ b/postprocessor/burn7.cpp
@@ -1,11 +1,10 @@
 /*  c++ -O2 -o burn7.x burn7.cpp -lm -lnetcdf_c++ -lnetcdf */
 
 #define NETCDF_OUTPUT
-// #define OPEN_MP
 
-#define V0 "burn 7.6 (15-Dec-2015)"
-#define V1 "Edilbert Kirk - University of Hamburg"
-#define V2 "Usage: burn7 [-help|-c|-d|-m|-n|-s] <modelfile> <resultfile>"
+#define V0 "burn 7.7 (02-Feb-2017)"
+#define V1 "KlimaCampus"
+#define V2 "Usage: burn7 [-help|-c|-d|-m|-n|-r|-s] <modelfile> <resultfile>"
 #define V3 "New: option <-g> writes Grads ctl for service plotting"
 #define V4 "New: comments (#) are allowed in namelist file"
 
@@ -130,13 +129,13 @@ NcDim *TimDim;
 
 #endif
 
-int     SaveMemory = 0; /* Switch on for dynamic memory usage */
-int     PolyCreate = 0; /* Create polynomials files for hires T1365 and more */
-int     PolyDisk   = 0; /* Read polynomials from disk */
-int     GaussGrid  = 0; /* Output Guassian Grid */
-int     DPM        = 0; /* Days Per Month */
-int     DPY        = 0; /* Days Per Year */
-int     DayDivisor = 0; /* Use for day adjustment if more than 99 days per month */
+int     SaveMemory =  0; /* Switch on for dynamic memory usage */
+int     PolyCreate =  0; /* Create polynomials files for hires T1365 and more */
+int     PolyDisk   =  0; /* Read polynomials from disk */
+int     GaussGrid  = -1; /* 1: use Gaussian grid, 0: use regular grid */
+int     DPM        =  0; /* Days Per Month */
+int     DPY        =  0; /* Days Per Year */
+int     DayDivisor =  0; /* Use for day adjustment if more than 99 days per month */
 
 char    VerType; /* s=Sigma   p=Pressure */
 char    HorType; /* s=Spherical   f=Fourier   z=Zonal Mean   g=Gauss Grid */
@@ -3452,22 +3451,22 @@ void legini(void)
    ZTEMP1 = new double[Fouriers];
    ZTEMP2 = new double[Fouriers];
 
-   for (int i=0 ; i<hdim ; ++i) pnm[i]=hnm[i]=777.0;
-   Gaulat = new GauLat(Gats,"Gaulat");
-   Outlon = new RegLon(Lons,"Outlon");
+   // if gridtype for output is not selected, choose Gauss grid
+   // for matching resolution and regular grid else
+
+   if (GaussGrid < 0) GaussGrid = (Lats == Gats && Lons == Gons);
+
+   Gaulat = new GauLat(Gats,"Gaulat"); // Gaussian latitudes of input grid
+   Outlon = new RegLon(Lons,"Outlon"); // Regular longitudes of output grid
    if (GaussGrid) Outlat = new GauLat(Lats,"Outlat");
    else           Outlat = new RegLat(Lats,"Outlat");
-   if (Debug) Outlat->PrintArray();
-   if (Debug) Outlon->PrintArray();
 
-   if (Lats == Gats && Lons == Gons)
-   for (jlat = 0 ; jlat < Gats ; ++jlat)
+   if (Debug)
    {
-      Outlat->Phi[jlat] = Gaulat->Phi[jlat];
-      Outlat->gmu[jlat] = Gaulat->gmu[jlat];
-      Outlat->gwt[jlat] = Gaulat->gwt[jlat];
+      Gaulat->PrintArray();
+      if (Lats != Gats || !GaussGrid) Outlat->PrintArray();
+      Outlon->PrintArray();
    }
-   else if (Debug) Outlat->PrintArray();
 
    if (PolyCreate)
    {
@@ -6128,14 +6127,15 @@ int main(int argc, char *argv[])
    for (i = 1 ; i < argc ; ++i) {
       if (argv[i][0] == '-') {
          if      (argv[i][1] == 'c') {PrintCodes(); exit(1);}
-         else if (argv[i][1] == 'd') Debug      = 1;
-         else if (argv[i][1] == 'v') Debug      = 1;
-         else if (argv[i][1] == 'n') NetCDF     = 1;
-         else if (argv[i][1] == 'g') Grads      = 1;
-         else if (argv[i][1] == 'm') Mean       = 1;
-         else if (argv[i][1] == 'p') PolyCreate = 1;
-         else if (argv[i][1] == 'i') GaussGrid  = 1;
-         else if (argv[i][1] == 's') SaveMemory = 1;
+         else if (argv[i][1] == 'd') Debug      =  1;
+         else if (argv[i][1] == 'v') Debug      =  1;
+         else if (argv[i][1] == 'n') NetCDF     =  1;
+         else if (argv[i][1] == 'g') Grads      =  1;
+         else if (argv[i][1] == 'm') Mean       =  1;
+         else if (argv[i][1] == 'p') PolyCreate =  1;
+         else if (argv[i][1] == 'i') GaussGrid  =  1;
+         else if (argv[i][1] == 'r') GaussGrid  =  0;
+         else if (argv[i][1] == 's') SaveMemory =  1;
          else Usage();
       }
       else if (ifile[0] == '\0') strcpy(ifile,argv[i]);