diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -221,7 +221,11 @@
                 raise util.Abort(_('working copy of .hgtags is changed '
                                    '(please commit .hgtags manually)'))
 
-        self._tag(names, node, message, local, user, date)
+        parents = self[None].parents()
+        parent = None
+        if len(parents) == 1 and parents[0].node() == nullid:
+            parent = self['tip'].node()
+        self._tag(names, node, message, local, user, date, parent=parent)
 
     def tags(self):
         '''return a mapping of tag to node'''
diff --git a/tests/test-tag-issue916 b/tests/test-tag-issue916
new file mode 100755
--- /dev/null
+++ b/tests/test-tag-issue916
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+hg init
+echo a > a
+hg commit -Am "test" -d "1000000 0"
+
+echo % issue 916
+hg up 000000
+hg parents
+hg tag -r tip -d "1000000 0" "jglick"
+echo % should it be removed ?
+cat .hgtags
+hg tip
diff --git a/tests/test-tag-issue916.out b/tests/test-tag-issue916.out
new file mode 100644
--- /dev/null
+++ b/tests/test-tag-issue916.out
@@ -0,0 +1,11 @@
+adding a
+% issue 916
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+% should it be removed ?
+0acdaf8983679e0aac16e811534eb49d7ee1f2b4 jglick
+changeset:   1:99b47705d075
+tag:         tip
+user:        test
+date:        Mon Jan 12 13:46:40 1970 +0000
+summary:     Added tag jglick for changeset 0acdaf898367
+
