def timecode_from_frame(frame_duration, fps=24.0):
    """
    Return the timecode corresponding to the given frame, for the given fps.

    :param frame_duration: Int representing a number of frames.
    :param fps: Float value representing frames per second.
    :returns: String representing a non-drop-frame timecode value.
    """

    # Total number of seconds in whole clip.
    seconds = frame_duration / fps

    # Remainder frames from seconds calculation.
    remainder = seconds - int(seconds)
    frames = int(round(remainder * fps))

    # Total number of minutes in the whole clip.
    minutes = int(seconds) / 60

    # Remainder seconds from minutes calculation
    remainder = minutes - int(minutes)
    seconds = int(round(remainder * 60))

    # Total number of hours in the whole clip.
    hours = int(minutes) / 60

    # Remainder minutes from hours calculation.
    remainder = hours - int(hours)
    minutes = int(round(remainder * 60))

    # Hours without the remainder.
    hours = int(hours)

    timecode = "%02d:%02d:%02d:%02d" % (hours, minutes, seconds, frames)

    return timecode