```python
def tiles_across(length: int, tile: int) -> int:
    """Return how many tiles of size `tile` cover a length of `length`, rounding up."""
    return math.ceil(length / tile)


def tiles_needed(width: int, height: int, tile: int, spare: int) -> int:
    """Return the tiles needed for a wall with width `width`, height `height`,
    adding a whole-percent allowance for breakages and rounding up again.

    The allowance is calculated as 0.1% of the total number of tiles.
    """
    total_tiles = (width * height) // tile
    if spare:
        total_tiles += 1
    
    return math.ceil(total_tiles * 1.01 / tile)
```