```python
def score_scale(mark: int, was_out_of: int, now_out_of: int) -> int:
    """Scale a mark from one total to another, rounding down."""
    if was_out_of == 0:
        return 0
    if now_out_of == 0:
        return 0
    if mark < 0:
        raise ValueError("Mark cannot be negative")
    if mark > was_out_of:
        raise ValueError("Mark cannot exceed the original total")
    if was_out_of < 0 or now_out_of < 0:
        raise ValueError("Totals cannot be negative")
    
    scaled = (mark * now_out_of) // was_out_of
    return scaled
```