1. A method of encoding data for transmission from a source to a destination over a communications channel, wherein the data is represented at least by a plurality, K, of source symbols, K being the number of source symbols and the source symbols being in an ordered set, the method comprising: generating one or more repair symbols from the plurality of source symbols; transmitting one or more symbols over the communications channel, wherein the communication channel is a channel that can introduce errors in transmissions, wherein the one or more symbols are selected from the group consisting of source symbols and repair symbols; determining a desired degree of accuracy for the regeneration of source symbols; determining, for each of a plurality of source symbols, an associated symbol relation that is a function of a systematic index, J(K), where J(K) is a function of K; determining L intermediate symbol values according to a function of values of the K source symbols and the K symbol associated symbol relations associated with the K source symbols and a set of L-K pre-coding relations, wherein L is at least K; determining a value for each repair symbol using the associated symbol relation for that repair symbol and the plurality of L intermediate symbol values; wherein the encoding is such that the plurality of source symbols can be regenerated to the desired degree of accuracy from any predetermined number, N, of a combination of the transmitted source symbols and transmitted repair symbols.