I have been attempting to implement the following use case: I have a gnus group that receives messages with subjects that look sort of like this: Some title, part 1, by X Some title, part 2, by X Some other title, part 32, by Y I gather these into threads by title using my own simplification function which I add to `gnus-simplify-subject-functions' in this group. I also set `gnus-thread-hide-subtree' to `t' in this group, so each title takes up one Summary line. I then want to sort these threads by the *latest* message in the thread. Thus, when a new part is received, the entire thread shows up as "newer". To do this, I created by own function to set `gnus-thread-sort-functions' to. This looks like this: (defun md5i-thread-sort-by-most-recent-date-reverse (h1 h2) (<= (gnus-thread-latest-date h1) (gnus-thread-latest-date h2))) Unfortunately, this fails in many cases due to the fact that `gnus-summary-prepare' gathers thread after sorting threads. In my case I need the reverse, and I think that the reverse always makes sense. I have a patch which does this, and has been working for me for half a year or so. I suggest you add this or an equivalent change to Gnus. Feel free to rewrite this patch completely. I wrote it long enough ago that I do not remember why I needed to create `gnus-make-threaded-sort'.