Why this matters
The bug. To get the last n items, the start index is len - n — not len - n + 1. The +1 is the classic fencepost.
Why this matters. Off-by-one slicing in pagination, log truncation, and ringbuffer tails causes data loss that *looks correct* in dev (you see something) and is hard to spot until the missing record matters in production.
Code-review heuristic. Any time you see arithmetic on len(), ask: would this work for n = 1? For n = len?
Review heuristic
When a comparison involves <, <=, >, >=, or -1, work the boundary case by hand: what happens with zero items? One item? n+1 items? Pagination, buffer length, and recursion are the three places where the bug is most likely.
External reference: CWE-193: Off-by-one Error.