Hi Ted, I think I've solved the problem. Can it really be that the culprit was a misplaced parenthesis? In your code, the --8<---------------cut here---------------start------------->8--- ;; now delete the articles, unless a) copy is t, and there was a copy done ;; b) a move was done to a single group ;; c) backend-supports-deletions is nil (unless copy (when (and deletep backend-supports-deletions) (dolist (article articles) (gnus-summary-set-process-mark article) (gnus-message 9 "Deleting article %d" article)) (when articles (let ((gnus-novice-user nil)) ; don't ask me if I'm sure (gnus-summary-delete-article nil))))) (gnus-summary-yank-process-mark) (length articles) --8<---------------cut here---------------end--------------->8--- part was inside the (dolist (group groups) ...) that performs the actual copy/move. As a result, after the articles were copied into the first group, they got deleted instantly and so moving/copying to subsequent groups failed. My patch is an extension of your last patch. It simply moves the snippet above out of the `dolist', so that first the copies are made to all groups, and thereafter the deletions are performed. (I also added a `nreverse' to the assignment from `valid-move-destinations' to `groups', so that the copy/move order is the one declared by the user...) I've tested it briefly, and when I unmark a spam message in my "Junk Mail" group, it is correctly copied to both my INBOX and my training.ham group, and it's deleted from the "Junk Mail" group. Could you please review the patch and apply it if it semms correct?