```python
def divide_fixed(numerator: int, denominator: int, places: int) -> str:
    if not isinstance(numerator, int) or not isinstance(denominator, int) or not isinstance(places, int):
        raise ValueError("All arguments must be integers")
    if denominator == 0:
        raise ValueError("Denominator cannot be zero")
    if places < 0 or places > 6:
        raise ValueError("Places must be between 0 and 6 inclusive")

    is_negative = numerator * denominator < 0
    numerator, denominator = abs(numerator), abs(denominator)

    quotient, remainder = divmod(numerator * 10**places, denominator)
    if remainder >= denominator // 2:
        quotient += 1

    result = str(quotient).rjust(places + 1, '0')[:places]
    if places == 0:
        return '-' + result if is_negative else result
    else:
        return ('-' if is_negative else '') + result[:-1] + '.' + result[-1]
```