def process(proc_data):
    """
    Final processing to conform to the schema.

    Parameters:

        proc_data:   (dictionary) raw structured data to process

    Returns:

        List of dictionaries. Structured data with the following schema:

        [
          {
            "state":            string,        # space/~ converted to null
            "remote":           string,
            "refid":            string,
            "st":               integer,
            "t":                string,
            "when":             integer,       # - converted to null
            "poll":             integer,
            "reach":            integer,
            "delay":            float,
            "offset":           float,
            "jitter":           float
          },
        ]

    """
    for entry in proc_data:

        if entry['s'] == '~':
            entry['s'] = None

        entry['state'] = entry.pop('s')

        int_list = ['st', 'when', 'poll', 'reach']
        for key in int_list:
            if key in entry:
                try:
                    entry[key] = int(entry[key])
                except (ValueError):
                    entry[key] = None

        float_list = ['delay', 'offset', 'jitter']
        for key in float_list:
            if key in entry:
                try:
                    entry[key] = float(entry[key])
                except (ValueError):
                    entry[key] = None

    return proc_data