def _first_occurance_binary_method(array: list, min_idx: int, match_idx: int) -> int:
    """Returns the lowest index of a given value in a list

    This function is only called once the target value has been found at match_idx.
    The function then uses binary search to find the first occurance of
    the target value in the list"""

    if (delta_idx := match_idx - min_idx) <= 0:
        return match_idx

    halfway_idx = delta_idx // 2 + min_idx

    if array[halfway_idx] == array[match_idx]:
        return _first_occurance_binary_method(array, min_idx, halfway_idx)
    else:
        return _first_occurance_binary_method(array, halfway_idx + 1, match_idx)