diff --git a/CHANGES/v2.3.txt b/CHANGES/v2.3.txt
index d5aa9352d26b82e48f3bb88ad164a50f43d49a5e..b2586b9e3053fa92aa0801743ce246c9b56aa394 100644
--- a/CHANGES/v2.3.txt
+++ b/CHANGES/v2.3.txt
@@ -160,6 +160,7 @@ See branch \branch{v2.3} on git repository.
 - Prevented users from causing segfaults by storing derivatives without LOWMEM flag.  In these caess PLUMED crashes with meaningful errors.
 - Fixed bug in \ref HISTOGRAM that causes nans when using KERNEL=DISCRETE option
 - Fixed a bug in the parser related to braces, see \issue{229}
+- Fixed a bug that appeared when using \ref Q3, \ref Q4 and \ref Q6 with LOWEST or HIGHEST flag
 
 For developers:
 - plumedcheck validation has been made stricter. All the checks are now described in the developer manual.
diff --git a/regtest/crystallization/rt-q6/colv.reference b/regtest/crystallization/rt-q6/colv.reference
index 8d69c80ee2192c76108352c9c7255dee723a579b..320d6162236a8580640400b282a440620d62fb12 100644
--- a/regtest/crystallization/rt-q6/colv.reference
+++ b/regtest/crystallization/rt-q6/colv.reference
@@ -1,2 +1,2 @@
-#! FIELDS time q6.mean
- 0.000000 0.245096
+#! FIELDS time q6.mean q6.lowest
+ 0.000000 0.245096 0.150123
diff --git a/regtest/crystallization/rt-q6/plumed.dat b/regtest/crystallization/rt-q6/plumed.dat
index f09db50863178d3da093fdb70496de4401793b76..d107217876b4cb22783e894547bae7bb623d4e55 100644
--- a/regtest/crystallization/rt-q6/plumed.dat
+++ b/regtest/crystallization/rt-q6/plumed.dat
@@ -3,10 +3,10 @@ COORDINATIONNUMBER SPECIES=1-64 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LABEL=c
 PRINT ARG=c.* FILE=colv2
 DUMPDERIVATIVES ARG=c.* FILE=deriv2 FMT=%8.4f 
 
-Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LOWEST LABEL=q6 
 # Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q6n
 PRINT ARG=q6.* FILE=colv 
-DUMPDERIVATIVES ARG=q6.* FILE=deriv FMT=%8.4f
+DUMPDERIVATIVES ARG=q6.mean FILE=deriv FMT=%8.4f
 
 Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q4
 # Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q4n
diff --git a/src/vesselbase/StoreDataVessel.cpp b/src/vesselbase/StoreDataVessel.cpp
index 447299dc6db2587f5928a7fb7147ccc0ec1cb39f..d33efc15a4bc1f1ff66cdb555167311ea3e11c27 100644
--- a/src/vesselbase/StoreDataVessel.cpp
+++ b/src/vesselbase/StoreDataVessel.cpp
@@ -37,8 +37,6 @@ StoreDataVessel::StoreDataVessel( const VesselOptions& da ):
   ActionWithValue* myval=dynamic_cast<ActionWithValue*>( getAction() );
   if( !myval ) hasderiv=false;
   else hasderiv=!myval->doNotCalculateDerivatives();
-
-  vecsize=getAction()->getNumberOfQuantities();
 }
 
 void StoreDataVessel::addActionThatUses( ActionWithVessel* actionThatUses ) {
@@ -46,8 +44,6 @@ void StoreDataVessel::addActionThatUses( ActionWithVessel* actionThatUses ) {
 }
 
 void StoreDataVessel::resize() {
-  plumed_dbg_assert( vecsize>0 );
-
   if( getAction()->lowmem || !getAction()->derivativesAreRequired() ) {
     nspace = 1;
     active_der.resize( max_lowmem_stash * ( 1 + getAction()->getNumberOfDerivatives() ) );
@@ -58,6 +54,7 @@ void StoreDataVessel::resize() {
     nspace = 1 + getAction()->maxderivatives;
     active_der.resize( getNumberOfStoredValues() * ( 1 + getAction()->maxderivatives ) );
   }
+  vecsize=getAction()->getNumberOfQuantities();
   resizeBuffer( getNumberOfStoredValues()*vecsize*nspace );
   local_buffer.resize( getNumberOfStoredValues()*vecsize*nspace );
 }
@@ -102,14 +99,14 @@ void StoreDataVessel::storeDerivatives( const unsigned& myelem, MultiValue& myva
 }
 
 void StoreDataVessel::retrieveSequentialValue( const unsigned& jelem, const bool& normed, std::vector<double>& values ) const {
-  plumed_assert( values.size()==vecsize );
+  plumed_dbg_assert( values.size()==vecsize );
   unsigned ibuf = jelem * vecsize * nspace;
   for(unsigned i=0; i<vecsize; ++i) { values[i]=local_buffer[ibuf]; ibuf+=nspace; }
   if( normed && values.size()>2 ) getAction()->normalizeVector( values );
 }
 
 void StoreDataVessel::retrieveValueWithIndex( const unsigned& myelem, const bool& normed, std::vector<double>& values ) const {
-  plumed_assert( values.size()==vecsize );
+  plumed_dbg_assert( values.size()==vecsize );
   unsigned jelem = getStoreIndex( myelem );
   retrieveSequentialValue( jelem, normed, values );
 }