diff --git a/src/adjmat/ContactMatrix.cpp b/src/adjmat/ContactMatrix.cpp
index 9b945c602f694cca7836b379a1ee642610634535..6622c2826fbcf37a3fe946fbfdabbd183e2e4671 100644
--- a/src/adjmat/ContactMatrix.cpp
+++ b/src/adjmat/ContactMatrix.cpp
@@ -135,11 +135,10 @@ double ContactMatrix::calculateWeight( const unsigned& taskCode, const double& w
 
 double ContactMatrix::compute( const unsigned& tindex, multicolvar::AtomValuePack& myatoms ) const {
   Vector distance = getSeparation( myatoms.getPosition(0), myatoms.getPosition(1) );
-  double dfunc, sw = switchingFunction( getBaseColvarNumber( myatoms.getIndex(0) ), getBaseColvarNumber( myatoms.getIndex(1) ) - ncol_t ).calculate( distance.modulo(), dfunc );
+  double dfunc;
+  double sw = switchingFunction( getBaseColvarNumber( myatoms.getIndex(0) ), getBaseColvarNumber( myatoms.getIndex(1) ) - ncol_t ).calculate( distance.modulo(), dfunc );
 
   if( !doNotCalculateDerivatives() ) {
-    Vector distance = getSeparation( myatoms.getPosition(0), myatoms.getPosition(1) );
-    double dfunc, sw = switchingFunction( getBaseColvarNumber( myatoms.getIndex(0) ), getBaseColvarNumber( myatoms.getIndex(1) ) - ncol_t ).calculate( distance.modulo(), dfunc );
     addAtomDerivatives( 1, 0, (-dfunc)*distance, myatoms );
     addAtomDerivatives( 1, 1, (+dfunc)*distance, myatoms );
     myatoms.addBoxDerivatives( 1, (-dfunc)*Tensor(distance,distance) );