def sat_proportional_filter(
        input: float, abs_min=0.0, abs_max=10.0, factor=1) -> float:
    """
    Simple saturated proportional filter
    :param input                : input value
    :param abs_min and abs_max  : upper and lower bound, abs value
    :param factor               : multiplier factor for the input value
    :return                     : output filtered value, within boundary
    """
    output = 0.0
    input *= factor
    if abs(input) < abs_min:
        if (input < 0):
            output = -abs_min
        else:
            output = abs_min
    elif abs(input) > abs_max:
        if (input > 0):
            output = abs_max
        else:
            output = -abs_max
    else:
        output = input
    return output