'Return a tuple (column, start, length) based on this instance\'s
parameters. If the first time this is called, the row\'s \'start\'
value is 1, then all \'start\' values including the first will be one
less than in the actual input data, to adjust for one-based
specifications.  Values for \'start\' and \'length\' will be cast to
integers.'

def __call__(self, row):

    if (self.one_based is None):
        self.one_based = (int(row[self.start]) == 1)
    if self.one_based:
        adjusted_start = (int(row[self.start]) - 1)
    else:
        adjusted_start = int(row[self.start])
    return FixedWidthField(row[self.column], adjusted_start, int(row[self.length]))
