```python
def score_scale(mark: int, was_out_of: int, now_out_of: int) -> int:
    """
    Restate a mark given out of one total as a mark out of another, rounded down.
    A mark standing above the total it was given out of still cannot pass the new total,
    and a total of nothing to scale from gives a mark of nothing.
    """
    if mark < 0:
        raise ValueError("Mark cannot be negative")
    if was_out_of == 0 and now_out_of == 0:
        return 0
    if mark > now_out_of:
        return now_out_of
    return mark
```