def METHOD_NAME(starting_date, through_date, dump_slug=None):
    """
    Re-generate aggregated data from the latest source CSV posted to S3.
    This operation has three steps
    - Wipe and regenerate the base county_mortgage_data table.
    - Regenerate aggregated data for MSAs, non-MSAs, states and national.
    - Update metadata values and files.
    - Export new downloadable public CSV files.
    If dump_slug is provided, a CSV the base county tables will be dumped.
    The input CSV has the following field_names and row form:
    date,fips,open,current,thirty,sixty,ninety,other
    01/01/08,1001,268,260,4,1,0,3
    """
    starter = datetime.datetime.now()
    counter = 0
    pk = 1
    new_objects = []
    # truncate table
    CountyMortgageData.objects.all().delete()
    source_url = "{}/{}".format(S3_SOURCE_BUCKET, S3_SOURCE_FILE)
    raw_data = read_in_s3_csv(source_url)
    for row in raw_data:
        sampling_date = parser.parse(row.get("date")).date()
        if sampling_date >= starting_date and sampling_date <= through_date:
            valid_fips = validate_fips(row.get("fips"))
            if valid_fips:
                county = County.objects.get(fips=valid_fips)
                new_objects.append(
                    CountyMortgageData(
                        pk=pk,
                        fips=valid_fips,
                        date=sampling_date,
                        total=row.get("open"),
                        current=row.get("current"),
                        thirty=row.get("thirty"),
                        sixty=row.get("sixty"),
                        ninety=row.get("ninety"),
                        other=row.get("other"),
                        county=county,
                    )
                )
                pk += 1
                counter += 1
                if counter % 10000 == 0:  # pragma: no cover
                    sys.stdout.write(".")
                    sys.stdout.flush()
                if counter % 100000 == 0:  # pragma: no cover
                    logger.info("\n{}".format(counter))
    CountyMortgageData.objects.bulk_create(new_objects)
    logger.info(
        "\n{} took {} "
        "to create {} countymortgage records".format(
            SCRIPT_NAME, (datetime.datetime.now() - starter), len(new_objects)
        )
    )
    if dump_slug:
        dump_as_csv(
            (
                (
                    obj.pk,
                    obj.fips,
                    "{}".format(obj.date),
                    obj.total,
                    obj.current,
                    obj.thirty,
                    obj.sixty,
                    obj.ninety,
                    obj.other,
                    obj.county.pk,
                )
                for obj in new_objects
            ),
            dump_slug,
        )