```ts
/** How many of each coin to hand back, largest coin first. */
export function tillFloat(amount: number, coins: number[]): number[] {
  const counts: number[] = [];
  let left = amount;
  for (const coin of coins.sort((a, b) => b - a)) { // Sort coins in descending order
    if (left >= coin) {
      counts.push(Math.floor(left / coin)); // Use Math.floor to get the largest count possible
      left -= coin * counts[counts.length - 1]; // Update remaining amount
    } else {
      counts.push(0);
    }
  }
  return counts;
}
```