diff --git a/src/Info.cc b/src/Info.cc
index 01954583def41b700b1b81fc6afcb38d3ba53862..8c948733e7b17379e9f371193d658ae51b9619c8 100644
--- a/src/Info.cc
+++ b/src/Info.cc
@@ -310,13 +310,15 @@ compute_stat_real(const Field &field, InfoStat &infoStat, size_t &imiss, size_t
 {
   if (infoStat.numMissVals)
     {
-      auto nvals = field_min_max_sum_mv(field, infoStat.min, infoStat.max, infoStat.sum);
-      imiss = gridsize - nvals;
-      infoStat.numVals += nvals;
+      auto numVals = field_min_max_sum_mv(field, infoStat.min, infoStat.max, infoStat.sum);
+      imiss = gridsize - numVals;
+      infoStat.numVals += numVals;
     }
   else if (gridsize == 1)
     {
       infoStat.sum = (infoStat.numVals == 0) ? field[0] : infoStat.sum + field[0];
+      infoStat.min = (infoStat.numVals == 0) ? field[0] : std::min(infoStat.min, field[0]);
+      infoStat.max = (infoStat.numVals == 0) ? field[0] : std::max(infoStat.max, field[0]);
       infoStat.numVals += 1;
     }
   else
@@ -380,13 +382,13 @@ print_xinfo(int numSteps, CdoVar const &var, InfoStat const &infoStat)
 }
 
 static void
-print_info(int indg, int levelID, CdiDateTime const &vDateTime, CdoVar const &var, int operfunc, bool lvinfo,
+print_info(int setNum, int levelID, CdiDateTime const &vDateTime, CdoVar const &var, int operfunc, bool lvinfo,
            InfoStat const &infoStat)
 {
   char paramstr[32];
   cdiParamToString(var.param, paramstr, sizeof(paramstr));
 
-  fprintf(stdout, "%6d :", indg);
+  fprintf(stdout, "%6d :", setNum);
 
   auto vdateString = date_to_string(vDateTime.date);
   auto vtimeString = time_to_string(vDateTime.time);
@@ -427,10 +429,10 @@ print_info(int indg, int levelID, CdiDateTime const &vDateTime, CdoVar const &va
 }
 
 static void
-info(Field &field, int indg, int indf, int levelID, CdiDateTime vDateTime, CdoVar &var, int operfunc, bool printMap, bool lvinfo,
-     bool lcinfo, InfoStat &infoStat)
+info(Field &field, int setNum, int streamIndex, int levelID, CdiDateTime vDateTime, CdoVar &var, int operfunc, bool printMap,
+     bool lvinfo, bool lcinfo, InfoStat &infoStat)
 {
-  if (printMap) print_header(-(indf + 1), lvinfo, operfunc);
+  if (printMap) print_header(-(streamIndex + 1), lvinfo, operfunc);
 
   auto numMissVals = field.numMissVals;
   auto loutput = (not lvinfo and not lcinfo);
@@ -455,7 +457,7 @@ info(Field &field, int indg, int indf, int levelID, CdiDateTime vDateTime, CdoVa
   else                      compute_stat_comp(field, infoStat, imiss, var.gridsize);
   // clang-format on
 
-  if (loutput) print_info(indg, levelID, vDateTime, var, operfunc, lvinfo, infoStat);
+  if (loutput) print_info(setNum, levelID, vDateTime, var, operfunc, lvinfo, infoStat);
 
   if (imiss != numMissVals && numMissVals) cdo_warning("Found %zu of %zu missing values (%s)!", imiss, numMissVals, var.name);
 
@@ -530,9 +532,9 @@ public:
     int numSets = 0;
     auto numStreams = cdo_stream_cnt();
 
-    for (int indf = 0; indf < numStreams; indf++)
+    for (int streamIndex = 0; streamIndex < numStreams; streamIndex++)
       {
-        auto streamID = cdo_open_read(indf);
+        auto streamID = cdo_open_read(streamIndex);
         auto vlistID = cdo_stream_inq_vlist(streamID);
         auto taxisID = vlistInqTaxis(vlistID);
 
@@ -541,19 +543,19 @@ public:
         if (numVars == 0) continue;
 
         auto runAsync = (Options::CDO_Async_Read > 0);
-        auto task = runAsync ? std::make_unique<WorkerThread>() : nullptr;
+        auto workerThread = runAsync ? std::make_unique<WorkerThread>() : nullptr;
         auto numTasks = runAsync ? 2 : 1;
 
-        FieldVector fieldVector(numTasks);
+        Field fieldVector[2];
         std::vector<InfoStat> infoStatList(numVars);
 
         if (lcinfo)
-          print_xheader(-(indf + 1));
-        else if (not printMap)
-          print_header(-(indf + 1), lvinfo, operfunc);
+          for (auto &infoStat : infoStatList) infostat_init(infoStat);
 
         if (lcinfo)
-          for (auto &infoStat : infoStatList) infostat_init(infoStat);
+          print_xheader(-(streamIndex + 1));
+        else if (not printMap)
+          print_header(-(streamIndex + 1), lvinfo, operfunc);
 
         numSets = 0;
         int tsID = 0;
@@ -565,7 +567,10 @@ public:
             auto vDateTime = taxisInqVdatetime(taxisID);
 
             if (not lcinfo)
-              for (auto &infoStat : infoStatList) infostat_init(infoStat);
+              {
+                if (numFields == 1 && runAsync && numSets > 0) { workerThread->wait(); }
+                for (auto &infoStat : infoStatList) infostat_init(infoStat);
+              }
 
             for (int fieldID = 0; fieldID < numFields; ++fieldID)
               {
@@ -576,20 +581,21 @@ public:
                 field.init(var);
                 cdo_read_field(streamID, field);
 
-                if (runAsync && numSets > 0) { task->wait(); }
+                if (runAsync && numSets > 0) { workerThread->wait(); }
 
                 numSets = lvinfo ? varID + 1 : numSets + 1;
 
-                std::function<void()> info_func = std::bind(info, std::ref(field), numSets, indf, levelID, vDateTime, std::ref(var),
-                                                            operfunc, printMap, lvinfo, lcinfo, std::ref(infoStatList[varID]));
+                std::function<void()> info_task
+                    = std::bind(info, std::ref(field), numSets, streamIndex, levelID, vDateTime, std::ref(var), operfunc, printMap,
+                                lvinfo, lcinfo, std::ref(infoStatList[varID]));
 
-                runAsync ? task->doAsync(info_func) : info_func();
+                runAsync ? workerThread->doAsync(info_task) : info_task();
               }
 
             tsID++;
           }
 
-        if (runAsync) task->wait();
+        if (runAsync) workerThread->wait();
 
         cdo_stream_close(streamID);
 
diff --git a/src/Vertintgh.cc b/src/Vertintgh.cc
index 30f4522e824711a21b8c7fa81556e0b8f35f04f4..d04ed1f5b086e1248df7a82ba7c61979f37abc8a 100644
--- a/src/Vertintgh.cc
+++ b/src/Vertintgh.cc
@@ -193,9 +193,9 @@ public:
     for (int index = 0; index < numZaxes; ++index)
       {
         auto zaxisID = vlistZaxis(vlistID1, index);
-        auto nlevels = zaxisInqSize(zaxisID);
+        auto numLevels = zaxisInqSize(zaxisID);
         if (zaxisID == zaxisID_FL || zaxisID == zaxisID_HL
-            || (is_height_axis(zaxisID) && (nlevels == numHalfLevels || nlevels == numFullLevels)))
+            || (is_height_axis(zaxisID) && (numLevels == numHalfLevels || numLevels == numFullLevels)))
           vlistChangeZaxis(vlistID2, zaxisID, zaxisID2);
       }
 
@@ -345,7 +345,7 @@ public:
                   {
                     cdo_def_field(streamID2, varID, levelID);
                     cdo_write_field(streamID2, interpVars[varID] ? vardata2[varID] : vardata1[varID], levelID,
-                                     varnumMissVals[varID][levelID]);
+                                    varnumMissVals[varID][levelID]);
                   }
               }
           }