This optimization wouldn't be necessary if we had a nice fast "notmuch
tag" command. But since it's currently fairly slow, (see Xapian defect
250: http://trac.xapian.org/ticket/250), we're willing to take some
extra care to avoid calling "notmuch tag" unnecessarily.
 
 Before moving, also remove the \"unread\" tag from the current message."
   (interactive)
-  (notmuch-show-remove-tag "unread")
+  (if (member "unread" (notmuch-show-get-tags))
+      (notmuch-show-remove-tag "unread"))
   ; First, ensure we get off the current message marker
   (if (not (eobp))
       (forward-char))