diff --git a/src/analysis/Histogram.cpp b/src/analysis/Histogram.cpp
index b41c01d87d3c98a042696e974e82d061c4fe7bb9..6b8e5136ba54c6ee7c426922d7395964c190bdaf 100644
--- a/src/analysis/Histogram.cpp
+++ b/src/analysis/Histogram.cpp
@@ -196,7 +196,7 @@ fenergy(false)
   for(unsigned i=0;i<gmax.size();++i) log.printf(" %s",gmax[i].c_str() );
   log.printf("\n");
   log.printf("  Grid bin");
-  for(unsigned i=0;i<gbin.size();++i) log.printf(" %d",gbin[i]);
+  for(unsigned i=0;i<gbin.size();++i) log.printf(" %u",gbin[i]);
   log.printf("\n");
 }
 
diff --git a/src/colvar/CoordinationBase.cpp b/src/colvar/CoordinationBase.cpp
index 2f1a8c648270e1e777198112a99c2a53f0c9cbbc..c5231fbdcf7178343662a5554da1fb2643681b92 100644
--- a/src/colvar/CoordinationBase.cpp
+++ b/src/colvar/CoordinationBase.cpp
@@ -86,7 +86,7 @@ firsttime(true)
   
   requestAtoms(nl->getFullAtomList());
  
-  log.printf("  between two groups of %d and %d atoms\n",ga_lista.size(),gb_lista.size());
+  log.printf("  between two groups of %u and %u atoms\n",static_cast<unsigned>(ga_lista.size()),static_cast<unsigned>(gb_lista.size()));
   log.printf("  first group:\n");
   for(unsigned int i=0;i<ga_lista.size();++i){
    if ( (i+1) % 25 == 0 ) log.printf("  \n");
diff --git a/src/colvar/Dipole.cpp b/src/colvar/Dipole.cpp
index 0fa1cb2a454c0aa60477584b95e6b908ac15046c..55c9bd656d2ebabad601ae3f228625bf41f8583a 100644
--- a/src/colvar/Dipole.cpp
+++ b/src/colvar/Dipole.cpp
@@ -75,7 +75,7 @@ PLUMED_COLVAR_INIT(ao)
   checkRead();
   addValueWithDerivatives(); setNotPeriodic();
 
-  log.printf("  of %d atoms\n",ga_lista.size());
+  log.printf("  of %u atoms\n",static_cast<unsigned>(ga_lista.size()));
   for(unsigned int i=0;i<ga_lista.size();++i){
     log.printf("  %d", ga_lista[i].serial());
   }
diff --git a/src/core/ActionWithVirtualAtom.cpp b/src/core/ActionWithVirtualAtom.cpp
index bcad72a3fb9cb7bfb3176de1160448b72e9837fb..814f9c3a86d53c7a72516190995d603f900a493a 100644
--- a/src/core/ActionWithVirtualAtom.cpp
+++ b/src/core/ActionWithVirtualAtom.cpp
@@ -37,7 +37,7 @@ ActionWithVirtualAtom::ActionWithVirtualAtom(const ActionOptions&ao):
   ActionAtomistic(ao)
 {
   index=atoms.addVirtualAtom(this);
-  log.printf("  serial associated to this virtual atom is %d\n",index.serial());
+  log.printf("  serial associated to this virtual atom is %u\n",index.serial());
 }
 
 ActionWithVirtualAtom::~ActionWithVirtualAtom(){
diff --git a/src/core/SetupMolInfo.cpp b/src/core/SetupMolInfo.cpp
index 5b7b61f80a196ef37f90907d0ecff547b3ff8ae7..2e88caf0d575e4ade5446f1e2b744574e2991c1d 100644
--- a/src/core/SetupMolInfo.cpp
+++ b/src/core/SetupMolInfo.cpp
@@ -81,7 +81,7 @@ pdb(*new(PDB))
     if( ! pdb.read(reference,plumed.getAtoms().usingNaturalUnits(),0.1/plumed.getAtoms().getUnits().getLength()))plumed_merror("missing input file " + reference );
 
     std::vector<std::string> chains; pdb.getChainNames( chains );
-    log.printf("  pdb file named %s contains %d chains \n",reference.c_str(), chains.size() );
+    log.printf("  pdb file named %s contains %u chains \n",reference.c_str(), static_cast<unsigned>(chains.size()));
     for(unsigned i=0;i<chains.size();++i){
        unsigned start,end; std::string errmsg;
        pdb.getResidueRange( chains[i], start, end, errmsg );
@@ -89,7 +89,7 @@ pdb(*new(PDB))
        AtomNumber astart,aend; 
        pdb.getAtomRange( chains[i], astart, aend, errmsg );
        if( errmsg.length()!=0 ) error( errmsg );
-       log.printf("  chain named %s contains residues %u to %u and atoms %d to %d \n",chains[i].c_str(),start,end,astart.serial(),aend.serial());
+       log.printf("  chain named %s contains residues %u to %u and atoms %u to %u \n",chains[i].c_str(),start,end,astart.serial(),aend.serial());
     }
   }
 }
diff --git a/src/generic/WholeMolecules.cpp b/src/generic/WholeMolecules.cpp
index 870739bf902b2b9be0adab5d56f6cd4b99d73706..188d2526625c7f5d83eee29aa063083ae04f20ac 100644
--- a/src/generic/WholeMolecules.cpp
+++ b/src/generic/WholeMolecules.cpp
@@ -151,7 +151,7 @@ ActionAtomistic(ao)
       std::vector< std::vector<AtomNumber> > backatoms;
       moldat[0]->getBackbone( resstrings, moltype, backatoms );
       for(unsigned i=0;i<backatoms.size();++i){
-          log.printf("  atoms in entity %d : ", groups.size()+1 );
+          log.printf("  atoms in entity %u : ", static_cast<unsigned>(groups.size()+1));
           for(unsigned j=0;j<backatoms[i].size();++j) log.printf("%d ",backatoms[i][j].serial() );
           log.printf("\n");
           groups.push_back( backatoms[i] );
diff --git a/src/multicolvar/DumpMultiColvar.cpp b/src/multicolvar/DumpMultiColvar.cpp
index cb7f88160d92ff324817de898c9c40fa63b85d20..fbdb11350d6bd7d0e2538bfa76c1172d4fd067a4 100644
--- a/src/multicolvar/DumpMultiColvar.cpp
+++ b/src/multicolvar/DumpMultiColvar.cpp
@@ -121,7 +121,7 @@ DumpMultiColvar::DumpMultiColvar(const ActionOptions&ao):
 }
 
 void DumpMultiColvar::update(){
-  of.printf("%d\n",mycolv->getFullNumberOfTasks());
+  of.printf("%u\n",mycolv->getFullNumberOfTasks());
   const Tensor & t(mycolv->getPbc().getBox());
   if(mycolv->getPbc().isOrthorombic()){
     of.printf((" "+fmt_xyz+" "+fmt_xyz+" "+fmt_xyz+"\n").c_str(),lenunit*t(0,0),lenunit*t(1,1),lenunit*t(2,2));
diff --git a/src/multicolvar/MultiColvar.cpp b/src/multicolvar/MultiColvar.cpp
index 67c2252810bec71d882f3df34ded62018efd98f8..ceed81cee4724842f815091da0a687991a1540ce 100644
--- a/src/multicolvar/MultiColvar.cpp
+++ b/src/multicolvar/MultiColvar.cpp
@@ -145,7 +145,7 @@ void MultiColvar::readGroupsKeyword( int& natoms ){
          }
       }
       if( !verbose_output ){
-          log.printf("  constructing colvars from %d atoms : ", t.size() );
+          log.printf("  constructing colvars from %u atoms : ", static_cast<unsigned>(t.size()) );
           for(unsigned i=0;i<t.size();++i) log.printf("%d ",t[i].serial() );
           log.printf("\n");
       }
@@ -186,7 +186,7 @@ void MultiColvar::readTwoGroups( const std::string& key1, const std::string& key
      }
   }
   if( !verbose_output ){
-      log.printf("  constructing colvars from two groups containing %d and %d atoms respectively\n",t1.size(),t2.size() );
+      log.printf("  constructing colvars from two groups containing %u and %u atoms respectively\n",static_cast<unsigned>(t1.size()),static_cast<unsigned>(t2.size()));
       log.printf("  group %s contains atoms : ", key1.c_str() );
       for(unsigned i=0;i<t1.size();++i) log.printf("%d ",t1[i].serial() );
       log.printf("\n");
@@ -231,7 +231,7 @@ void MultiColvar::readThreeGroups( const std::string& key1, const std::string& k
         }
       }
       if( !verbose_output ){
-        log.printf("  constructing colvars from two groups containing %d and %d atoms respectively\n",t1.size(),t2.size() ); 
+        log.printf("  constructing colvars from two groups containing %u and %u atoms respectively\n",static_cast<unsigned>(t1.size()),static_cast<unsigned>(t2.size())); 
         log.printf("  group %s contains atoms : ", key1.c_str() );
         for(unsigned i=0;i<t1.size();++i) log.printf("%d ",t1[i].serial() ); 
         log.printf("\n"); 
@@ -258,7 +258,7 @@ void MultiColvar::readThreeGroups( const std::string& key1, const std::string& k
           }
       }
       if( !verbose_output ){
-        log.printf("  constructing colvars from three groups containing %d, %d  and %d atoms respectively\n",t1.size(),t2.size(),t3.size() );
+        log.printf("  constructing colvars from three groups containing %u, %u and %u atoms respectively\n",static_cast<unsigned>(t1.size()),static_cast<unsigned>(t2.size()),static_cast<unsigned>(t3.size()));
         log.printf("  group %s contains atoms : ", key1.c_str() );
         for(unsigned i=0;i<t1.size();++i) log.printf("%d ",t1[i].serial() );
         log.printf("\n"); 
@@ -286,7 +286,7 @@ void MultiColvar::readSpeciesKeyword( int& natoms ){
           for(unsigned i=0;i<t.size();++i) addTaskToList(i);
           ablocks[0].resize( t.size() ); for(unsigned i=0;i<t.size();++i) ablocks[0][i]=i; 
           if( !verbose_output ){
-              log.printf("  generating colvars from %d atoms of a particular type\n",t.size() );
+              log.printf("  generating colvars from %u atoms of a particular type\n",static_cast<unsigned>(t.size()));
               log.printf("  atoms involved : "); 
               for(unsigned i=0;i<t.size();++i) log.printf("%d ",t[i].serial() );
               log.printf("\n");
@@ -322,7 +322,7 @@ void MultiColvar::readSpeciesKeyword( int& natoms ){
             else { all_atoms.addIndexToList( t2[i] ); ablocks[0][i]=t1.size() + k; k++; }
          }
          if( !verbose_output ){
-             log.printf("  generating colvars from a group of %d central atoms and %d other atoms\n",t1.size(), t2.size() );
+             log.printf("  generating colvars from a group of %u central atoms and %u other atoms\n",static_cast<unsigned>(t1.size()),static_cast<unsigned>(t2.size()));
              log.printf("  central atoms are : ");
              for(unsigned i=0;i<t1.size();++i) log.printf("%d ",t1[i].serial() );
              log.printf("\n");
diff --git a/src/secondarystructure/SecondaryStructureRMSD.cpp b/src/secondarystructure/SecondaryStructureRMSD.cpp
index 4c688e3f28bbe6d3206e7ed3559cf3cb758d07f0..d9832415760e8fda2c3594d5c581fc98d1ee9507 100644
--- a/src/secondarystructure/SecondaryStructureRMSD.cpp
+++ b/src/secondarystructure/SecondaryStructureRMSD.cpp
@@ -140,7 +140,7 @@ void SecondaryStructureRMSD::readBackboneAtoms( const std::string& moltype, std:
 void SecondaryStructureRMSD::addColvar( const std::vector<unsigned>& newatoms ){
   if( colvar_atoms.size()>0 ) plumed_assert( colvar_atoms[0].size()==newatoms.size() );
   if( verbose_output ){
-     log.printf("  Secondary structure segment %d contains atoms : ", colvar_atoms.size()+1);
+     log.printf("  Secondary structure segment %u contains atoms : ", static_cast<unsigned>(colvar_atoms.size()+1));
      for(unsigned i=0;i<newatoms.size();++i) log.printf("%d ",all_atoms(newatoms[i]).serial() );
      log.printf("\n");
   }