import math


def is_step(fraction, n, count, first_count):
    """
    Determines whether the current iteration is a step (an iteration with print).
    :param float fraction: Determines the frequency of prints.
    :param int n: Total number of iterations.
    :param int count: Current iteration.
    :param int first_count: Starting iteration.
    :return: bool
    """
    # Absolute steps
    if fraction < 0:
        mod = round(abs(fraction))
        return (count % mod) == 0

    # Convert to fraction
    if fraction > 1:
        fraction = max(2.0, fraction) - 1.0
        fraction = 1.0 / fraction

    # Compute step
    step = (n - first_count) * fraction

    # Find next split
    current_multiplier = math.floor(count / step)
    current_split = current_multiplier * step

    # Check if passed step
    return float(count - 1) < current_split <= float(count)