Sometimes when threading is enabled, Gnus displays the messages in a thread in a bizarre order in the *Summary* buffer, with an older message shown as a reply to a newer message. This cannot be right unless the author of one of the messages has a time machine. Attached are two screen shots showing this problem, one with a thread from the Emacs development list and one with a thread from this list. I would estimate that the frequency of the problem is about once in around 1000 messages. The problem isn't new, but I do not think it has always happened. It's been happening for maybe a year or two I think. I have the following settings for threading: (setq gnus-article-sort-functions '((not gnus-article-sort-by-number))) (setq gnus-thread-sort-functions '((not gnus-thread-sort-by-most-recent-number))) (setq gnus-subthread-sort-functions '((not gnus-thread-sort-by-most-recent-number))) . Changing these to: (setq gnus-article-sort-functions '((not gnus-article-sort-by-date))) (setq gnus-thread-sort-functions '((not gnus-thread-sort-by-most-recent-date))) (setq gnus-subthread-sort-functions '((not gnus-thread-sort-by-most-recent-date))) does not solve the problem. I thought perhaps that the `gnus-sort-gathered-threads-function' might be the solution here, but so far I have had no success with it. If I try to do (setq gnus-sort-gathered-threads-function '((not gnus-thread-sort-by-date))) , when the *Summary* buffer opens I get the error message sort: Invalid function: ((not gnus-thread-sort-by-date)) . It almost seems that "a list containing functions and ‘(not some-function)’ elements" is not supported here? To try to work around this, I tried (defun nlj-thread-sort-by-date-descending (h1 h2) "Sort threads in the opposite order to `gnus-thread-sort-by-date'." (not (gnus-thread-sort-by-date h1 h2))) (setq gnus-sort-gathered-threads-function 'nlj-thread-sort-by-date-descending) which avoids the error message but produces an outlandish sorting order.