diff --git a/modules/io/tests/test_io_pdb.cc b/modules/io/tests/test_io_pdb.cc
index 99071118e987899c00a88dab6ae9e2d010d59e97..0c479a3ca0afc72e4d4fce4ab9877332c1c6e45c 100644
--- a/modules/io/tests/test_io_pdb.cc
+++ b/modules/io/tests/test_io_pdb.cc
@@ -1131,4 +1131,40 @@ BOOST_AUTO_TEST_CASE(test_pqr_write_atom)
   BOOST_CHECK_EQUAL(fwriter.IsPQR(), true);
 }
 
+// Charges
+BOOST_AUTO_TEST_CASE(test_parse_charge)
+{
+  Logger::Instance().PushVerbosityLevel(0);
+  String fname("testfiles/pdb/charge.pdb");
+  PDBReader reader(fname, IOProfile());
+  mol::EntityHandle ent=mol::CreateEntity();
+  reader.Import(ent);
+
+  BOOST_CHECK(ent.FindAtom("A", 68, "N").GetCharge() == 1.0);
+  BOOST_CHECK(ent.FindAtom("A", 68, "CA").GetCharge() == 0);
+  BOOST_CHECK(ent.FindAtom("A", 68, "CB").GetCharge() == 0);
+  BOOST_CHECK(ent.FindAtom("A", 68, "CG1").GetCharge() == 0);
+  BOOST_CHECK(ent.FindAtom("A", 68, "CG2").GetCharge() == 4);
+  BOOST_CHECK(ent.FindAtom("A", 68, "O").GetCharge() == -1);
+
+}
+BOOST_AUTO_TEST_CASE(faulty_charges)
+{
+  String fname("testfiles/pdb/charge_faulty.pdb");
+  PDBReader reader(fname, IOProfile());
+  mol::EntityHandle ent=mol::CreateEntity();
+  BOOST_CHECK_THROW(reader.Import(ent), IOException);
+//  IOProfile profile;
+//  profile.fault_tolerant=true;
+//  PDBReader reader2(fname, profile);
+//  reader2.Import(ent);
+//
+//  BOOST_CHECK(ent.FindAtom("A", 68, "N").GetCharge() == 1.0);
+//  BOOST_CHECK(ent.FindAtom("A", 68, "CA").GetCharge() == 0);
+//  BOOST_CHECK(ent.FindAtom("A", 68, "CB").GetCharge() == 0);
+//  BOOST_CHECK(ent.FindAtom("A", 68, "CG1").GetCharge() == 0);
+//  BOOST_CHECK(ent.FindAtom("A", 68, "CG2").GetCharge() == 4);
+//  BOOST_CHECK(ent.FindAtom("A", 68, "O").GetCharge() == -1);
+}
+
 BOOST_AUTO_TEST_SUITE_END();
diff --git a/modules/io/tests/testfiles/pdb/charge.pdb b/modules/io/tests/testfiles/pdb/charge.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..50cb4d6744b838af652d1acf83d11f3c53ed05d6
--- /dev/null
+++ b/modules/io/tests/testfiles/pdb/charge.pdb
@@ -0,0 +1,7 @@
+ATOM      1  N   VAL A  68     -67.790  -2.746   1.520  1.00120.70       1SG  1+
+ATOM      2  CA  VAL A  68     -68.907  -2.689   2.484  1.00120.70       1SG
+ATOM      3  CB  VAL A  68     -68.374  -2.515   3.872  1.00120.70       1SG  0+
+ATOM      4  CG1 VAL A  68     -67.534  -3.751   4.234  1.00120.70       1SG
+ATOM      5  CG2 VAL A  68     -67.591  -1.194   3.924  1.00120.70       1SG  4+
+ATOM      6  C   VAL A  68     -69.796  -1.526   2.177  1.00120.70       1SG
+ATOM      7  O   VAL A  68     -69.882  -1.095   1.029  1.00120.70       1SG  1-
\ No newline at end of file
diff --git a/modules/io/tests/testfiles/pdb/charge_faulty.pdb b/modules/io/tests/testfiles/pdb/charge_faulty.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..2fb2446db267a630f4e6e6d6445db99867b40d23
--- /dev/null
+++ b/modules/io/tests/testfiles/pdb/charge_faulty.pdb
@@ -0,0 +1,7 @@
+ATOM      1  N   VAL A  68     -67.790  -2.746   1.520  1.00120.70       1SG  1+
+ATOM      2  CA  VAL A  68     -68.907  -2.689   2.484  1.00120.70       1SG
+ATOM      3  CB  VAL A  68     -68.374  -2.515   3.872  1.00120.70       1SG  68
+ATOM      4  CG1 VAL A  68     -67.534  -3.751   4.234  1.00120.70       1SG
+ATOM      5  CG2 VAL A  68     -67.591  -1.194   3.924  1.00120.70       1SG  4+
+ATOM      6  C   VAL A  68     -69.796  -1.526   2.177  1.00120.70       1SG
+ATOM      7  O   VAL A  68     -69.882  -1.095   1.029  1.00120.70       1SG  1-
\ No newline at end of file