diff --git a/properties.go b/properties.go
index e7cac17..44f9c1f 100644
--- a/properties.go
+++ b/properties.go
@@ -596,11 +596,18 @@
 
 // ----------------------------------------------------------------------------
 
-// deletes the key from the map and its comments
+// deletes the key from the map and comments
 // abides by the rules of the builtin delete()
 func (p *Properties) Delete(key string) () {
 	delete(p.m, key)
 	delete(p.c, key)
+	newKeys := []string{}
+	for _, k := range p.k {
+		if k != key {
+			newKeys = append(newKeys, key)
+		}
+	}
+	p.k = newKeys
 }
 
 // ----------------------------------------------------------------------------
diff --git a/properties_test.go b/properties_test.go
index 2615f32..8d4c7c0 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -798,14 +798,16 @@
 }
 
 func (s *TestSuite) TestDeleteKey(c *C) {
-	input := "#comments should also be gone\nkey=to-be-deleted"
+	input := "#comments should also be gone\nkey=to-be-deleted\nsecond=key"
 	p, err := parse(input)
 	c.Assert(err, IsNil)
-	c.Check(len(p.m), Equals, 1)
+	c.Check(len(p.m), Equals, 2)
 	c.Check(len(p.c), Equals, 1)
+	c.Check(len(p.k), Equals, 2)
 	p.Delete("key")
-	c.Check(len(p.m), Equals, 0)
+	c.Check(len(p.m), Equals, 1)
 	c.Check(len(p.c), Equals, 0)
+	c.Check(len(p.k), Equals, 1)
 }
 
 func (s *TestSuite) TestDeleteUnknownKey(c *C) {
@@ -814,9 +816,11 @@
 	c.Assert(err, IsNil)
 	c.Check(len(p.m), Equals, 1)
 	c.Check(len(p.c), Equals, 1)
+	c.Check(len(p.k), Equals, 1)
 	p.Delete("wrong-key")
 	c.Check(len(p.m), Equals, 1)
 	c.Check(len(p.c), Equals, 1)
+	c.Check(len(p.k), Equals, 1)
 }
 
 // ----------------------------------------------------------------------------
