```ts
/**
 * Takes entries from the end of a list toward its start, returning how many must be taken before their total reaches a target.
 * Returns minus one when the whole list never reaches it.
 *
 * @param values - The array of numbers to take entries from.
 * @param target - The target sum to reach or exceed.
 * @returns The number of entries to take, or -1 if the target is never reached.
 */
export function takeBack(values: number[], target: number): number {
  if (target <= 0) return 0; // If target is nothing, no entries are needed.

  let sum = 0;
  for (let i = values.length - 1; i >= 0; i--) {
    sum += values[i];
    if (sum >= target) {
      return values.length - i;
    }
  }

  return -1;
}
```