Pip Cet wrote: >> So we now silently replace the argument with another, smaller value, >> and then go ahead as if business as usual? Is that a good, >> user-friendly behavior? > It's certainly incorrect for circular lists. Yes, sorry, I forgot the circular case. Fixed by installing the attached patch. This patch improves circular-list nthcdr performance for fixnums too. For example, on my Fedora 28 x86-64 platform (AMD Phenom II X4 910e, circa 2010) the third line of the following benchmark runs about 8 million times faster: (setq bench-circular (list 1 2 3 4 5 6)) (setcdr (nthcdr 5 bench-circular) bench-circular) (nthcdr 536870911 bench-circular) Normally I wouldn't bother with this sort of performance improvement (I mean, how often to people write code that deliberately goes around in circles? :-), but nthcdr is used so often that it seemed worth doing. Plus it was fun to fix this mostly by using machine arithmetic rather than GMP.