1. A method of determining currency of data in a data processing system comprising: recording, in a data processing step, each source of data, a last time of any data change for each source and a time of modification of data in any target data modified by the data processing step; determining the processing steps along a dependency chain used to populate the data sources for an initiating data reporting or processing program recursively back through each processing step in the dependency chain that populates a source processing step until one or more source processing steps are reached that has data sources whose processing steps do not support execution via a backchain, has sources that are external to the processing system or does not have any data sources; determining whether a program associated with each such processing step has run since each source of data for the processing step was last modified; and if any one of the sources for the program of such processing step is more recent than a last run time of the program associated with the processing step, running the program and updating target data and creating report outputs of the processing step and recording tracking information identifying the currency of each source used as input for the processing step.