I quite often run into a situation where I want to treat a list as a circular (repeating) list, and want to take a specific sublist of it, such as... One past the end of the list: Append[#, First@#] & @ {a, b, c} > {a, b, c, a} An item preceding the list included: Prepend[#, Last@#] & @ {a, b, c} > {c, a, b, c} Three rounds of the circular list from the start: Join[#, #, #] & @ {a, b, c} > {a, b, c, a, b, c, a, b, c} Or even every second item on the list, for two rounds: Join[#, #][[;; ;; 2]] & @ {a, b, c} > {a, c, b} Obviously there are more of these where you can combine extended features of `Part` (the `[[` ... `]]` syntax) over circular lists. What would be the most practical (short, clean, efficient, maybe even elegant) ways to do this, without writing one-off code every time such a small need arises?