diff --git a/pycgtool/bondset.py b/pycgtool/bondset.py
index e4faef5912b5dc949d8cfddf3519b3982bcbd90e..972e053f327307d4a51dedf0ad00a5e412926641 100644
--- a/pycgtool/bondset.py
+++ b/pycgtool/bondset.py
@@ -147,6 +147,10 @@ class BondSet:
                         func_form = functional_forms[atomlist[-1]]
                     except AttributeError:
                         func_form = self._functional_forms[len(atomlist)]
+
+                    if {x for x in atomlist if atomlist.count(x) > 1}:
+                        raise ValueError("Defined bond '{0}' contains duplicate atoms".format(atomlist))
+
                     mol_bonds.append(Bond(atoms=atomlist, func_form=func_form))
                     if len(atomlist) > 2:
                         angles_defined = True
diff --git a/test/data/duplicate_atoms.bnd b/test/data/duplicate_atoms.bnd
new file mode 100644
index 0000000000000000000000000000000000000000..3b7dce9c68a0fc537036e3818e68ab3375a94611
--- /dev/null
+++ b/test/data/duplicate_atoms.bnd
@@ -0,0 +1,3 @@
+[test]
+A1 A2
+A2 A2
diff --git a/test/data/nosections.cfg b/test/data/nosections.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..791e3496cf0150db9b52a7ce776882015ca5e7cd
--- /dev/null
+++ b/test/data/nosections.cfg
@@ -0,0 +1,3 @@
+hello
+I have no sections
+This is wrong
diff --git a/test/test_bondset.py b/test/test_bondset.py
index c9a1e18d41396a798e80b0ace05853461e16954a..7394917c000f548990174ab3c0bfefe40b110a6c 100644
--- a/test/test_bondset.py
+++ b/test/test_bondset.py
@@ -195,3 +195,7 @@ class BondSetTest(unittest.TestCase):
         logging.disable(logging.NOTSET)
 
         self.assertTrue(cmp_whitespace_float("sugar_out.itp", "test/data/sugar_out.itp", float_rel_error=0.001))
+
+    def test_duplicate_atoms_in_bond(self):
+        with self.assertRaises(ValueError):
+            bondset = BondSet("test/data/duplicate_atoms.bnd", DummyOptions)