diff --git a/modules/io/src/mol/pdb_reader.cc b/modules/io/src/mol/pdb_reader.cc
index 930ffbcf453f0563768d8aae0351f65fe6ac07bf..ee9cb18eddbb85499e54f4f8636c229e24748f3e 100644
--- a/modules/io/src/mol/pdb_reader.cc
+++ b/modules/io/src/mol/pdb_reader.cc
@@ -737,10 +737,15 @@ void PDBReader::ParseAndAddAtom(const StringRef& line, int line_num,
       if(charge.first) {
         if(line[79] != '-' && line[79] != '+') {
           std::stringstream ss;
-          ss << "error on line " << line_num << ": "
-             << "expect charge in format 1+, 2-, etc. got: "
+          ss << "invalid charge on line " << line_num << ": "
+             << "expected 1+, 2-, etc. got: "
              << line.substr(78, 2);
-          throw IOException(ss.str());      
+          if (profile_.fault_tolerant) {
+            LOG_WARNING(ss.str());
+            charge.first = 0.0;
+          } else {
+            throw IOException(ss.str());
+          }
         }
         if(line[79] == '-') charge.second *= (-1);
       }