def simulateTransition(x, s, r, fire):
    """Simulate a state transition.
    
    Parameters
    ----------
    x : int
        The current abundance class of the threatened species.
    s : float
        The state-independent probability of the population staying in its
        current abundance class.
    r : float
        The probability the population moves up one abundance class, assuming
        it is not staying in its current state. ``r`` depends on ``F``, the
        time in years since the last fire.
    fire : bool
        True if there has been a fire in the current year, otherwise False.
    
    Returns
    -------
    x : int
        The new abundance class of the threatened species.
    
    """
    assert 0 <= x < POPULATION_CLASSES, "'x' must be in " \
        "{0, 1...%s}" % POPULATION_CLASSES - 1
    assert 0 <= s <= 1, "'s' must be in [0; 1]"
    assert 0 <= r <= 1, "'r' must be in [0; 1]"
    assert fire in (True, False), "'fire' must be a boolean value"
    x = int(x)
    if x == 0:
        pass
    elif x == POPULATION_CLASSES - 1:
        if random.random() <= 1 - (1 - s) * (1 - r):
            pass
        else: # with probability (1 - s)(1 - r)
            x -= 1
    else:
        if random.random() <= s:
            pass
        else:
            if random.random() <= r: # with probability (1 - s)r
                x += 1
            else: # with probability (1 - s)(1 - r)
                x -= 1
    # Add the effect of a fire, making sure x doesn't go to -1
    if fire and (x > 0):
        x -= 1
    return(x)
Simulate a state transition.
    
    Parameters
    ----------
    x : int
        The current abundance class of the threatened species.
    s : float
        The state-independent probability of the population staying in its
        current abundance class.
    r : float
        The probability the population moves up one abundance class, assuming
        it is not staying in its current state. ``r`` depends on ``F``, the
        time in years since the last fire.
    fire : bool
        True if there has been a fire in the current year, otherwise False.
    
    Returns
    -------
    x : int
        The new abundance class of the threatened species.