This happens only when using `gnus-move-split-methods' nil. When I use a value like ((".*" . ("nnml+archive:emacs" ...))) the error does not happen and the operation succeeds. Although I choose the same target group in both cases. It was very hard to debug why that setting influences the result. I followed the problem to a call to `nnselect-article-number' - here: | (nnselect-article-number 2140) | (cl-mapcan #f(lambda (act) [t] (let* ((--cl-rest-- act) (range (if (= (length --cl-rest--) 3) (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--)))) (signal 'wrong-number-of-arguments (list '(range action marks) (length --cl-rest--))))) (action (car-safe (prog1 --cl-rest-- (setq --cl-rest-- (cdr --cl-rest--))))) (marks (car-safe --cl-rest--))) (mapcar #'(lambda (artgroup) (list (car artgroup) (gnus-compress-sequence (sort (cdr artgroup) #'<)) action marks)) (cond ((eq 'range 'range) (let* ((sequence (range-uncompress range))) (let ((valuefunc (or #'nnselect-article-number 'identity)) result) (if (null sequence) nil (mapc #'(lambda (member) (let* ((key (elt (if (> member 0) (progn (elt gnus-newsgroup-selection (1- member)))) 0)) (value (funcall valuefunc member)) (kr (assoc key result))) (if kr (let* ((v kr)) (setcdr v (cons value (cdr v)))) (setq result (cons (list key value) result))))) (reverse sequence)) result)))) ((eq 'range 'tuple) (let* ((keyfunc #'(lambda (elem) (elt (if (> (car elem) 0) (progn (elt gnus-newsgroup-selection (1- (car elem))))) 0))) (valuefunc #'(lambda (elem) (cons (elt (if (> (car elem) 0) (progn (elt gnus-newsgroup-selection (1- (car elem))))) 1) (cdr elem))))) (let ((valuefunc (or valuefunc 'identity)) result) (if (null range) nil (mapc #'(lambda (member) (let* ((key (funcall keyfunc member)) (value (funcall valuefunc member)) (kr (assoc key result))) (if kr (let* ((v kr)) (setcdr v (cons value (cdr v)))) (setq result (cons (list key value) result))))) (reverse range)) result)))) (t (let ((valuefunc (or #'nnselect-article-number 'identity)) result) (if (null range) nil (mapc #'(lambda (member) (let* ((key (elt (if (> member 0) (progn (elt gnus-newsgroup-selection (1- member)))) 0)) (value (funcall valuefunc member)) (kr (assoc key result))) (if kr (let* ((v kr)) (setcdr v (cons value (cdr v)))) (setq result (cons (list key value) result))))) (reverse range)) result))))))) (((2140) set nil) ((2140) del (unexist seen forward unsend download cache save score dormant bookmark killed expire reply tick)))) | (nnselect-request-set-mark "search->subject--bug--from---" (((2140) set nil) ((2140) del (unexist seen forward unsend download cache save score dormant bookmark killed expire reply tick))) "nnselect-ephemeral") | (gnus-request-set-mark "nnselect:search->subject--bug--from---" (((2140) set nil) ((2140) del (unexist seen forward unsend download cache save score dormant bookmark killed expire reply tick)))) | (gnus-summary-push-marks-to-backend 2140) | (gnus-summary-move-article nil) In the good case this returns a number, in the bad case `nil'. This is where the `nil' in the backtrace above seems to come from. But I don't understand why that happens. Could be `gnus-newsgroup-selection' that has a different value, but I gave up at that point - too many `define-inline' definitions related and I don't know if I'm on the right track anyway. Anybody any ideas? TIA, Michael. In GNU Emacs 31.0.50 (build 16, x86_64-pc-linux-gnu, cairo version 1.16.0) of 2024-09-02 built on drachen Repository revision: 6975d13525148306e1825bb881560c6b6b989cf8 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101007 System Description: Debian GNU/Linux 12 (bookworm)