A method for deriving data from an error correction encoded composite signal comprising: a) receiving a composite signal comprising contributions from a plurality of individual signals transmitted over different paths, the plurality of individual signals being used to represent a common data sequence such that each of the individual signals corresponds to a data sequence that is a version of the common data sequence, wherein the common data sequence is an encoded data sequence encoded using an error correction code, and wherein at least one of the plurality of individual signals corresponds to a different re-ordered version of the common data sequence; b) for each individual signal, calculating soft values of a first type over a block of symbols by taking into account the received composite signal and soft values of a second type, wherein for each symbol, a soft value of the first type is calculated for each possible symbol value of the symbol; c) generating symbol outputs by taking into account the soft values of the first type from the different individual signals; d) performing error correction decoding by taking into account the symbol soft outputs, to generate error correction decoded outputs; e) for each individual signal, calculating soft values of the second type over the block of symbols by taking into account the error correction decoded outputs, wherein for each symbol, a soft value of the second type is calculated for each possible symbol value of the symbol; f) feeding back the soft values of the second type for subsequent calculations of the soft values of the first type; g) iteratively updating the soft values of the first type, the symbol outputs, the error correction decoded outputs, and the soft values of the second type by repeating steps b), c), d), e); and f); and h) providing the updated error correction decoded outputs. a) receiving a composite signal comprising contributions from a plurality of individual signals transmitted over different paths, the plurality of individual signals being used to represent a common data sequence such that each of the individual signals corresponds to a data sequence that is a version of the common data sequence, wherein the common data sequence is an encoded data sequence encoded using an error correction code, and wherein at least one of the plurality of individual signals corresponds to a different re-ordered version of the common data sequence; b) for each individual signal, calculating soft values of a first type over a block of symbols by taking into account the received composite signal and soft values of a second type, wherein for each symbol, a soft value of the first type is calculated for each possible symbol value of the symbol; c) generating symbol outputs by taking into account the soft values of the first type from the different individual signals; d) performing error correction decoding by taking into account the symbol soft outputs, to generate error correction decoded outputs; e) for each individual signal, calculating soft values of the second type over the block of symbols by taking into account the error correction decoded outputs, wherein for each symbol, a soft value of the second type is calculated for each possible symbol value of the symbol; f) feeding back the soft values of the second type for subsequent calculations of the soft values of the first type; g) iteratively updating the soft values of the first type, the symbol outputs, the error correction decoded outputs, and the soft values of the second type by repeating steps b), c), d), e); and f); and h) providing the updated error correction decoded outputs.