diff --git a/modules/io/src/mol/pdb_writer.cc b/modules/io/src/mol/pdb_writer.cc index 6f9c01cb928322b48d9c03a13fe34cd814638abb..e18d96d7fbc551494ca0277a9f05b5fda9b7c226 100644 --- a/modules/io/src/mol/pdb_writer.cc +++ b/modules/io/src/mol/pdb_writer.cc @@ -80,7 +80,12 @@ void write_atom(std::ostream& ostr, FormattedLine& line, line( 0, 6)=record_name; // Avoid writing out atomnumbers larger than 5 digits if (atomnum > 99999) { - line( 6, 5)=fmt::LPaddedInt(atomnum - 100000 * (atomnum / 100000)); + if (charmm_style) { + line( 6, 5)=fmt::LPadded("*****"); + } else { + throw IOException("Atom number is too long for PDB output." + " At most 5 digits are allowed"); + } } else { line( 6, 5)=fmt::LPaddedInt(atomnum); }