def build_result_and_recon_output(result_form):
    """Build dict of data from a result form and add reconciliation information
    if it has a reconciliation form.

    :param result_form: The result form to build data for.

    :returns: A dict of information about this result form.
    """
    output = {
        'ballot': result_form.ballot.number,
        'center': result_form.center.code,
        'station': result_form.station_number,
        'gender': result_form.gender_name,
        'barcode': result_form.barcode,
        'race type': result_form.ballot_race_type_name,
        'voting district': result_form.ballot.sub_constituency.code,
        'number registrants': result_form.station.registrants
    }

    recon = result_form.reconciliationform

    if recon:
        output.update({
            'invalid ballots': recon.number_invalid_votes,
            'unstamped ballots': recon.number_unstamped_ballots,
            'cancelled ballots': recon.number_cancelled_ballots,
            'spoilt ballots': recon.number_spoiled_ballots,
            'unused ballots': recon.number_unused_ballots,
            'number of signatures': recon.number_signatures_in_vr,
            'received ballots papers': recon.number_ballots_received,
            'valid votes': recon.number_valid_votes,
        })

    return output