A step loop can leave early when a modeled state reaches a threshold.

Program

Play the program to change the inflow and see when the threshold is reached.

threshold_time_steps.f90
program threshold_time_steps_demo
    implicit none
    integer :: step
    integer :: max_steps
    real :: level
    real :: inflow
    real :: limit

    max_steps = 5
    level = 0.0
    inflow = 
    limit = 10.0
    do step = 1, max_steps
        level = level + inflow
        if (level >= limit) exit
    end do
    print '(I0, 1X, F0.1)', step, level
end program threshold_time_steps_demo
program threshold_time_steps_demo
    implicit none
    integer :: step
    integer :: max_steps
    real :: level
    real :: inflow
    real :: limit

    max_steps = 5
    level = 0.0
    inflow = 
    limit = 10.0
    do step = 1, max_steps
        level = level + inflow
        if (level >= limit) exit
    end do
    print '(I0, 1X, F0.1)', step, level
end program threshold_time_steps_demo
program threshold_time_steps_demo
    implicit none
    integer :: step
    integer :: max_steps
    real :: level
    real :: inflow
    real :: limit

    max_steps = 5
    level = 0.0
    inflow = 
    limit = 10.0
    do step = 1, max_steps
        level = level + inflow
        if (level >= limit) exit
    end do
    print '(I0, 1X, F0.1)', step, level
end program threshold_time_steps_demo
exit `exit` leaves the nearest loop immediately.
threshold `level >= limit` decides whether enough state has accumulated.
maximum steps `max_steps` bounds the loop even if the threshold is not reached early.