diff --git a/modules/io/tests/test_io_pdb.cc b/modules/io/tests/test_io_pdb.cc
index 248c810a32c7980e530ea685ec144bbfa58b5357..982bd2f463e82633b5b1e411b168503f5e481eb6 100644
--- a/modules/io/tests/test_io_pdb.cc
+++ b/modules/io/tests/test_io_pdb.cc
@@ -565,4 +565,44 @@ BOOST_AUTO_TEST_CASE(anisou_BZDNG_274)
   BOOST_CHECK_NO_THROW(reader.Import(ent));
 }
 
+BOOST_AUTO_TEST_CASE(charmm_rname)
+{
+  {
+    PDBWriter writer(String("testfiles/pdb/charmm_rname-out.pdb"),
+                     IOProfile("CHARMM", true, false, false,
+                               false, false, false));
+
+    mol::EntityHandle ent=mol::CreateEntity();
+    mol::XCSEditor edi=ent.EditXCS();
+    mol::ChainHandle ch=edi.InsertChain("A");
+    mol::ResidueHandle r=edi.AppendResidue(ch, "ALA");
+    mol::AtomHandle a=edi.InsertAtom(r, "N", geom::Vec3(32.0, -128.0, -2.5));
+    mol::ResidueHandle r2=edi.AppendResidue(ch, "G3AG");
+    mol::AtomHandle a2=edi.InsertAtom(r2, "N", geom::Vec3(32.0, -128.0, -2.5));
+    writer.Write(ent);
+  }
+  BOOST_CHECK(compare_files("testfiles/pdb/charmm_rname.pdb",
+                            "testfiles/pdb/charmm_rname-out.pdb"));
+}
+
+BOOST_AUTO_TEST_CASE(charmm_longcname)
+{
+  {
+    PDBWriter writer(String("testfiles/pdb/charmm_longcname-out.pdb"),
+                     IOProfile("CHARMM", true, false, false,
+                               false, false, false));
+
+    mol::EntityHandle ent=mol::CreateEntity();
+    mol::XCSEditor edi=ent.EditXCS();
+    mol::ChainHandle ch=edi.InsertChain("PROT");
+    mol::ResidueHandle r=edi.AppendResidue(ch, "ALA");
+    mol::AtomHandle a=edi.InsertAtom(r, "N", geom::Vec3(32.0, -128.0, -2.5));
+    mol::ResidueHandle r2=edi.AppendResidue(ch, "GLY");
+    mol::AtomHandle a2=edi.InsertAtom(r2, "N", geom::Vec3(35.0, -99.0, -10.5));
+    writer.Write(ent);
+  }
+  BOOST_CHECK(compare_files("testfiles/pdb/charmm_longcname.pdb",
+                            "testfiles/pdb/charmm_longcname-out.pdb"));
+}
+
 BOOST_AUTO_TEST_SUITE_END()