diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference
index 24869d91636ba87e3d954f0c6db840485c041ab8..0868bd70a74816e46e9734d1187832eaab412d32 100644
--- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference
+++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference
@@ -1,24 +1,24 @@
-#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax
+#! FIELDS time phi ves1.bias
 #! SET min_phi -pi
 #! SET max_phi pi
- 0.000000 -1.238  0.000  0.000  0.000
- 1.000000 -1.484  0.000  0.000  0.000
- 2.000000 -1.324  0.000  0.637  0.970
- 3.000000 -1.334  4.716  0.637  0.970
- 4.000000 -1.461  4.403  0.659  0.983
- 5.000000 -1.220  6.371  0.659  0.983
- 6.000000 -1.388  7.123  0.649  0.961
- 7.000000 -1.548  7.766  0.649  0.961
- 8.000000 -1.843  1.066  0.599  0.981
- 9.000000 -2.242 -3.365  0.599  0.981
- 10.000000 -1.148  8.387  0.439  0.847
- 11.000000 -1.758  5.325  0.439  0.847
- 12.000000 -1.319 12.218  0.523  0.975
- 13.000000 -2.991 -1.208  0.523  0.975
- 14.000000 -1.411 14.007  0.475  0.814
- 15.000000 -2.599 -0.724  0.475  0.814
- 16.000000 -1.461 15.304  0.451  0.755
- 17.000000 -1.379 17.133  0.451  0.755
- 18.000000 -1.677 11.559  0.598  0.988
- 19.000000 -1.524 17.994  0.598  0.988
- 20.000000 -1.200 15.348  0.585  0.965
+ 0.000000 -1.238  0.000
+ 1.000000 -1.484  0.000
+ 2.000000 -1.324  0.000
+ 3.000000 -1.334  4.716
+ 4.000000 -1.461  4.403
+ 5.000000 -1.220  6.371
+ 6.000000 -1.388  7.123
+ 7.000000 -1.548  7.766
+ 8.000000 -1.843  1.066
+ 9.000000 -2.242 -3.365
+ 10.000000 -1.148  8.387
+ 11.000000 -1.758  5.325
+ 12.000000 -1.319 12.218
+ 13.000000 -2.991 -1.208
+ 14.000000 -1.411 14.007
+ 15.000000 -2.599 -0.724
+ 16.000000 -1.461 15.304
+ 17.000000 -1.379 17.133
+ 18.000000 -1.677 11.559
+ 19.000000 -1.524 17.994
+ 20.000000 -1.200 15.348
diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat
index 83edb9d941b08f710ad4be36dda41772530b40f4..8c91d9c00a5f93e0e219a5a0793771dae4926f1d 100644
--- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat
+++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat
@@ -35,7 +35,7 @@ OPT_AVERAGED_SGD ...
 
 PRINT ...
   STRIDE=500
-  ARG=phi,ves1.bias,o1.*
+  ARG=phi,ves1.bias
   FILE=colvar.data FMT=%6.3f
 ... PRINT
 
diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference
index 0c1a8c5a0caae6b9ccb5a7d835816229b1ea175c..d138bff4a5d7dd914a4f5b4f905513a5ff160750 100644
--- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference
+++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference
@@ -1,24 +1,24 @@
-#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax
+#! FIELDS time phi ves1.bias
 #! SET min_phi -pi
 #! SET max_phi pi
- 0.000000 -1.238  0.000  0.000  0.000
- 1.000000 -1.484  0.000  0.000  0.000
- 2.000000 -1.324  0.000  0.637  0.970
- 3.000000 -1.334  4.716  0.637  0.970
- 4.000000 -1.461  4.403  0.659  0.983
- 5.000000 -1.220  8.417  0.659  0.983
- 6.000000 -1.388  9.566  0.649  0.961
- 7.000000 -1.548 11.484  0.649  0.961
- 8.000000 -1.843  1.350  0.599  0.981
- 9.000000 -2.242 -4.484  0.599  0.981
- 10.000000 -1.148 11.426  0.439  0.847
- 11.000000 -1.758  8.505  0.439  0.847
- 12.000000 -1.319 17.398  0.523  0.975
- 13.000000 -2.991 -2.357  0.523  0.975
- 14.000000 -1.411 21.113  0.475  0.814
- 15.000000 -2.599 -0.596  0.475  0.814
- 16.000000 -1.461 23.344  0.451  0.755
- 17.000000 -1.379 25.813  0.451  0.755
- 18.000000 -1.677 17.779  0.598  0.988
- 19.000000 -1.524 28.684  0.598  0.988
- 20.000000 -1.200 22.933  0.585  0.965
+ 0.000000 -1.238  0.000
+ 1.000000 -1.484  0.000
+ 2.000000 -1.324  0.000
+ 3.000000 -1.334  4.716
+ 4.000000 -1.461  4.403
+ 5.000000 -1.220  8.417
+ 6.000000 -1.388  9.566
+ 7.000000 -1.548 11.484
+ 8.000000 -1.843  1.350
+ 9.000000 -2.242 -4.484
+ 10.000000 -1.148 11.426
+ 11.000000 -1.758  8.505
+ 12.000000 -1.319 17.398
+ 13.000000 -2.991 -2.357
+ 14.000000 -1.411 21.113
+ 15.000000 -2.599 -0.596
+ 16.000000 -1.461 23.344
+ 17.000000 -1.379 25.813
+ 18.000000 -1.677 17.779
+ 19.000000 -1.524 28.684
+ 20.000000 -1.200 22.933
diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat
index 6feca1ee99a05d0e445fc737abedeca22fe92ac0..0c309e09f2f9b11a64d8737f614d94a66d9b7c4f 100644
--- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat
+++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat
@@ -35,7 +35,7 @@ OPT_AVERAGED_SGD ...
 
 PRINT ...
   STRIDE=500
-  ARG=phi,ves1.bias,o1.*
+  ARG=phi,ves1.bias
   FILE=colvar.data FMT=%6.3f
 ... PRINT
 
diff --git a/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference
index 7ccf565f61c8f645c5f4051f9685a51a6f63ce85..05a9c05c7776a6612c1a2645cf531e3a15de4e0b 100644
--- a/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference
+++ b/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference
@@ -1,24 +1,24 @@
-#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax
+#! FIELDS time phi ves1.bias
 #! SET min_phi -pi
 #! SET max_phi pi
- 0.000000 -1.238  0.000  0.000  0.000
- 1.000000 -1.484  0.000  0.000  0.000
- 2.000000 -1.324  0.000  0.637  0.970
- 3.000000 -1.334  3.269  0.637  0.970
- 4.000000 -1.461  3.220  0.659  0.983
- 5.000000 -1.220  4.325  0.659  0.983
- 6.000000 -1.388  5.057  0.649  0.961
- 7.000000 -1.548  6.027  0.649  0.961
- 8.000000 -1.843  1.879  0.599  0.981
- 9.000000 -2.242 -1.819  0.599  0.981
- 10.000000 -1.148  5.786  0.439  0.847
- 11.000000 -1.758  5.171  0.439  0.847
- 12.000000 -1.319  8.648  0.523  0.975
- 13.000000 -2.991  1.784  0.523  0.975
- 14.000000 -1.411 10.083  0.475  0.814
- 15.000000 -2.599  1.350  0.475  0.814
- 16.000000 -1.461 11.032  0.451  0.755
- 17.000000 -1.379 11.862  0.451  0.755
- 18.000000 -1.677  9.170  0.598  0.988
- 19.000000 -1.524 12.659  0.598  0.988
- 20.000000 -1.200 10.287  0.585  0.965
+ 0.000000 -1.238  0.000
+ 1.000000 -1.484  0.000
+ 2.000000 -1.324  0.000
+ 3.000000 -1.334  3.269
+ 4.000000 -1.461  3.220
+ 5.000000 -1.220  4.325
+ 6.000000 -1.388  5.057
+ 7.000000 -1.548  6.027
+ 8.000000 -1.843  1.879
+ 9.000000 -2.242 -1.819
+ 10.000000 -1.148  5.786
+ 11.000000 -1.758  5.171
+ 12.000000 -1.319  8.648
+ 13.000000 -2.991  1.784
+ 14.000000 -1.411 10.083
+ 15.000000 -2.599  1.350
+ 16.000000 -1.461 11.032
+ 17.000000 -1.379 11.862
+ 18.000000 -1.677  9.170
+ 19.000000 -1.524 12.659
+ 20.000000 -1.200 10.287
diff --git a/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat b/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat
index 94944311103fb0f4c42e992ec300cf3587a21c99..a8b1210974008274163c3a2de475a15b0126e912 100644
--- a/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat
+++ b/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat
@@ -33,7 +33,7 @@ OPT_AVERAGED_SGD ...
 
 PRINT ...
   STRIDE=500
-  ARG=phi,ves1.bias,o1.*
+  ARG=phi,ves1.bias
   FILE=colvar.data FMT=%6.3f
 ... PRINT
 
diff --git a/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference
index d1d516bcc2d66523125a380459cf3cee3988f789..7aeeeabc0fecc81e64d9f6e774cc10fdf403636e 100644
--- a/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference
+++ b/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference
@@ -1,24 +1,24 @@
-#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax
+#! FIELDS time phi ves1.bias
 #! SET min_phi -pi
 #! SET max_phi pi
- 0.000000 -1.238  0.000  0.000  0.000
- 1.000000 -1.484  0.000  0.000  0.000
- 2.000000 -1.324  0.000  0.637  0.970
- 3.000000 -1.334  4.716  0.637  0.970
- 4.000000 -1.461  4.403  0.659  0.983
- 5.000000 -1.220  6.371  0.659  0.983
- 6.000000 -1.388  7.123  0.649  0.961
- 7.000000 -1.548  7.766  0.649  0.961
- 8.000000 -1.843  1.066  0.599  0.981
- 9.000000 -2.242 -3.365  0.599  0.981
- 10.000000 -1.148  8.387  0.439  0.847
- 11.000000 -1.758  5.325  0.439  0.847
- 12.000000 -1.319 12.218  0.523  0.975
- 13.000000 -2.991 -1.159  0.523  0.975
- 14.000000 -1.411 13.737  0.475  0.814
- 15.000000 -2.599 -0.714  0.475  0.814
- 16.000000 -1.461 14.602  0.451  0.755
- 17.000000 -1.379 15.945  0.451  0.755
- 18.000000 -1.677 10.610  0.598  0.988
- 19.000000 -1.524 16.005  0.598  0.988
- 20.000000 -1.200 13.955  0.585  0.965
+ 0.000000 -1.238  0.000
+ 1.000000 -1.484  0.000
+ 2.000000 -1.324  0.000
+ 3.000000 -1.334  4.716
+ 4.000000 -1.461  4.403
+ 5.000000 -1.220  6.371
+ 6.000000 -1.388  7.123
+ 7.000000 -1.548  7.766
+ 8.000000 -1.843  1.066
+ 9.000000 -2.242 -3.365
+ 10.000000 -1.148  8.387
+ 11.000000 -1.758  5.325
+ 12.000000 -1.319 12.218
+ 13.000000 -2.991 -1.159
+ 14.000000 -1.411 13.737
+ 15.000000 -2.599 -0.714
+ 16.000000 -1.461 14.602
+ 17.000000 -1.379 15.945
+ 18.000000 -1.677 10.610
+ 19.000000 -1.524 16.005
+ 20.000000 -1.200 13.955
diff --git a/regtest/ves/rt-opt-averaged-sgd/plumed.dat b/regtest/ves/rt-opt-averaged-sgd/plumed.dat
index b5b82727dc88eca3718dff39356f610b27709f1d..339ced334ccdee58a9d2548a57f321bb1dcd6f9d 100644
--- a/regtest/ves/rt-opt-averaged-sgd/plumed.dat
+++ b/regtest/ves/rt-opt-averaged-sgd/plumed.dat
@@ -34,7 +34,7 @@ OPT_AVERAGED_SGD ...
 
 PRINT ...
   STRIDE=500
-  ARG=phi,ves1.bias,o1.*
+  ARG=phi,ves1.bias
   FILE=colvar.data FMT=%6.3f
 ... PRINT
 
diff --git a/regtest/ves/rt-opt-dummy/plumed.dat b/regtest/ves/rt-opt-dummy/plumed.dat
index a07e8d63167ada378107fc6208e443e39837647d..38b7cc0c2157bdd1719da3dc9a54539f1c1bff92 100644
--- a/regtest/ves/rt-opt-dummy/plumed.dat
+++ b/regtest/ves/rt-opt-dummy/plumed.dat
@@ -33,6 +33,7 @@ OPT_DUMMY ...
   HESSIAN_OUTPUT=1
   HESSIAN_FMT=%12.6f
   TARGETDIST_AVERAGES_FMT=%12.6f
+  MONITOR_INSTANTANEOUS_GRADIENT
 ... OPT_DUMMY
 
 PRINT ...
diff --git a/src/ves/Optimizer.cpp b/src/ves/Optimizer.cpp
index b7785f3661583eb4227a37d8de19088c2e0a5a75..f33da81517e313760736e1758e5b6f4ad1ea8558 100644
--- a/src/ves/Optimizer.cpp
+++ b/src/ves/Optimizer.cpp
@@ -48,6 +48,7 @@ Optimizer::Optimizer(const ActionOptions&ao):
   iter_counter(0),
   use_hessian_(false),
   diagonal_hessian_(true),
+  monitor_instantaneous_gradient_(false),
   use_mwalkers_mpi_(false),
   mwalkers_mpi_single_files_(true),
   dynamic_targetdists_(0),
@@ -274,6 +275,10 @@ Optimizer::Optimizer(const ActionOptions&ao):
       log.printf("  the reweight factor c(t) will be updated very %u coefficent iterations\n",ustride_reweightfactor_);
     }
   }
+  
+  if(keywords.exists("MONITOR_INSTANTANEOUS_GRADIENT")) {
+    parseFlag("MONITOR_INSTANTANEOUS_GRADIENT",monitor_instantaneous_gradient_);
+  }
 
   if(keywords.exists("MONITOR_AVERAGE_GRADIENT")) {
     bool monitor_aver_gradient = false;
@@ -709,9 +714,11 @@ Optimizer::Optimizer(const ActionOptions&ao):
   if(ncoeffssets_==1) {
     log.printf("  Output Components:\n");
     log.printf(" ");
-    addComponent("gradrms"); componentIsNotPeriodic("gradrms");
-    log.printf(" ");
-    addComponent("gradmax"); componentIsNotPeriodic("gradmax");
+    if(monitor_instantaneous_gradient_) {
+      addComponent("gradrms"); componentIsNotPeriodic("gradrms");
+      log.printf(" ");
+      addComponent("gradmax"); componentIsNotPeriodic("gradmax");      
+    }
     if(aver_gradient_pntrs_.size()>0) {
       log.printf(" ");
       addComponent("avergradrms"); componentIsNotPeriodic("avergradrms");
@@ -729,9 +736,11 @@ Optimizer::Optimizer(const ActionOptions&ao):
       log.printf("  Output Components for coefficent set %u:\n",i);
       std::string is=""; Tools::convert(i,is); is = "_" + coeffssetid_prefix_ + is;
       log.printf(" ");
-      addComponent("gradrms"+is); componentIsNotPeriodic("gradrms"+is);
-      log.printf(" ");
-      addComponent("gradmax"+is); componentIsNotPeriodic("gradmax"+is);
+      if(monitor_instantaneous_gradient_) {
+        addComponent("gradrms"+is); componentIsNotPeriodic("gradrms"+is);
+        log.printf(" ");
+        addComponent("gradmax"+is); componentIsNotPeriodic("gradmax"+is);
+      }
       if(aver_gradient_pntrs_.size()>0) {
         log.printf(" ");
         addComponent("avergradrms"+is); componentIsNotPeriodic("avergradrms"+is);
@@ -837,6 +846,8 @@ void Optimizer::registerKeywords( Keywords& keys ) {
   //
   keys.reserveFlag("START_OPTIMIZATION_AFRESH",false,"if the iterations should be started afresh when a restart has been triggered by the RESTART keyword or the MD code.");
   //
+  keys.addFlag("MONITOR_INSTANTANEOUS_GRADIENT",false,"if the instantaneous gradient should be monitored.");
+  //
   keys.reserveFlag("MONITOR_AVERAGE_GRADIENT",false,"if the averaged gradient should be monitored.");
   keys.reserve("optional","MONITOR_AVERAGES_EXP_DECAY","use an exponentially decaying averaging with a given time constant when monitoring the averaged gradient");
   //
@@ -859,8 +870,8 @@ void Optimizer::registerKeywords( Keywords& keys ) {
   keys.use("UPDATE_FROM");
   keys.use("UPDATE_UNTIL");
   // Components that are always active
-  keys.addOutputComponent("gradrms","default","the root mean square value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradrms-#.");
-  keys.addOutputComponent("gradmax","default","the largest absolute value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradmax-#.");
+  keys.addOutputComponent("gradrms","MONITOR_INSTANTANEOUS_GRADIENT","the root mean square value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradrms-#.");
+  keys.addOutputComponent("gradmax","MONITOR_INSTANTANEOUS_GRADIENT","the largest absolute value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradmax-#.");
   ActionWithValue::useCustomisableComponents(keys);
   // keys.addOutputComponent("gradmaxidx","default","the index of the maximum absolute value of the gradient");
 
@@ -905,6 +916,8 @@ void Optimizer::useRestartKeywords(Keywords& keys) {
 void Optimizer::useMonitorAveragesKeywords(Keywords& keys) {
   keys.use("MONITOR_AVERAGE_GRADIENT");
   keys.use("MONITOR_AVERAGES_EXP_DECAY");
+  keys.addOutputComponent("avergradrms","MONITOR_AVERAGE_GRADIENT","the root mean square value of the averaged coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradrms-#.");
+  keys.addOutputComponent("avergradmax","MONITOR_AVERAGE_GRADIENT","the largest absolute value of the averaged coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradmax-#.");
 }
 
 
@@ -1074,12 +1087,15 @@ void Optimizer::updateOutputComponents() {
     if(!fixed_stepsize_) {
       getPntrToComponent("stepsize")->set( getCurrentStepSize(0) );
     }
-    getPntrToComponent("gradrms")->set( gradient_pntrs_[0]->getRMS() );
-    size_t gradient_maxabs_idx=0;
-    getPntrToComponent("gradmax")->set( gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) );
+    if(monitor_instantaneous_gradient_) {
+      getPntrToComponent("gradrms")->set( gradient_pntrs_[0]->getRMS() );
+      size_t gradient_maxabs_idx=0;
+      getPntrToComponent("gradmax")->set( gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) );
+    }
     if(aver_gradient_pntrs_.size()>0) {
       getPntrToComponent("avergradrms")->set( aver_gradient_pntrs_[0]->getRMS() );
-      getPntrToComponent("avergradmax")->set( aver_gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) );
+      size_t avergradient_maxabs_idx=0;
+      getPntrToComponent("avergradmax")->set( aver_gradient_pntrs_[0]->getMaxAbsValue(avergradient_maxabs_idx) );
     }
   }
   else {
@@ -1088,12 +1104,15 @@ void Optimizer::updateOutputComponents() {
       if(!fixed_stepsize_) {
         getPntrToComponent("stepsize"+is)->set( getCurrentStepSize(i) );
       }
-      getPntrToComponent("gradrms"+is)->set( gradient_pntrs_[i]->getRMS() );
-      size_t gradient_maxabs_idx=0;
-      getPntrToComponent("gradmax"+is)->set( gradient_pntrs_[i]->getMaxAbsValue(gradient_maxabs_idx) );
+      if(monitor_instantaneous_gradient_) {
+        getPntrToComponent("gradrms"+is)->set( gradient_pntrs_[i]->getRMS() );
+        size_t gradient_maxabs_idx=0;
+        getPntrToComponent("gradmax"+is)->set( gradient_pntrs_[i]->getMaxAbsValue(gradient_maxabs_idx) );
+      }
       if(aver_gradient_pntrs_.size()>0) {
         getPntrToComponent("avergradrms"+is)->set( aver_gradient_pntrs_[0]->getRMS() );
-        getPntrToComponent("avergradmax"+is)->set( aver_gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) );
+        size_t avergradient_maxabs_idx=0;
+        getPntrToComponent("avergradmax"+is)->set( aver_gradient_pntrs_[0]->getMaxAbsValue(avergradient_maxabs_idx) );
       }
     }
   }
diff --git a/src/ves/Optimizer.h b/src/ves/Optimizer.h
index 6e49dc2b1ed6d45d1ed2bba2d71d9a4492cf7f3d..d10bc4a6f03248d1053076c31cc76644d6c3364d 100644
--- a/src/ves/Optimizer.h
+++ b/src/ves/Optimizer.h
@@ -67,6 +67,8 @@ private:
   bool diagonal_hessian_;
   bool hessian_covariance_from_averages_;
   //
+  bool monitor_instantaneous_gradient_;
+  //
   bool use_mwalkers_mpi_;
   bool mwalkers_mpi_single_files_;
   //