diff --git a/src/tools/PDB.cpp b/src/tools/PDB.cpp
index b42d8fd06b896eaedb1af343000522047b20be0a..77e7e464df9e4a8ed982cfaa7eee611ec19803e8 100644
--- a/src/tools/PDB.cpp
+++ b/src/tools/PDB.cpp
@@ -546,8 +546,12 @@ void PDB::print( const double& lunits, SetupMolInfo* mymoldat, OFile& ofile, con
     }
   } else {
     for(unsigned i=0; i<positions.size(); ++i) {
-      ofile.printf("ATOM  %5d %-4s %3s  %4u    %8.3f%8.3f%8.3f%6.2f%6.2f\n",
-                   numbers[i].serial(), mymoldat->getAtomName(numbers[i]).c_str(),
+      std::array<char,6> at;
+      const char* msg = h36::hy36encode(5,numbers[i].serial(),&at[0]);
+      plumed_assert(msg==nullptr) << msg;
+      at[5]=0;
+      ofile.printf("ATOM  %s %-4s %3s  %4u    %8.3f%8.3f%8.3f%6.2f%6.2f\n",
+                   &at[0], mymoldat->getAtomName(numbers[i]).c_str(),
                    mymoldat->getResidueName(numbers[i]).c_str(), mymoldat->getResidueNumber(numbers[i]),
                    lunits*positions[i][0], lunits*positions[i][1], lunits*positions[i][2],
                    occupancy[i], beta[i] );