def local_truncate_paths(paths, max_samples):
    """
    Truncate the list of paths so that the total number of samples is almost equal to max_samples. This is done by
    removing extra paths at the end of the list. But here, we do NOT make the last path shorter.
    :param paths: a list of paths
    :param max_samples: the absolute maximum number of samples
    :return: a list of paths, truncated so that the number of samples adds up to max-samples
    """
    # chop samples collected by extra paths
    # make a copy
    paths = list(paths)
    total_n_samples = sum(len(path["rewards"]) for path in paths)
    while len(paths) > 0 and total_n_samples - len(paths[-1]["rewards"]) >= max_samples:
        total_n_samples -= len(paths.pop(-1)["rewards"])
    return paths