1. A method for error-correction coding, for a given number of N bits, of a given value for a binary vector of N information bits wherein a codeword value is assigned for a vector of N parity bits, and wherein the method comprises the steps of: (a) encoding the said vector of N information bits, by using a first binary convolutional encoder, to create an output vector, which the output is a first truncated output to a vector of N bits; (b) permuting the said vector of N information bits, with respect to a first permutation, to create a vector of N permuted information bits; (c) encoding the said vector of N permuted information bits, by using a second binary convolutional encoder, to create an output vector, which the output is a second truncated output to vector of N bits; (d) setting a first internal binary vector of N bits equal to a result value from binary addition of: the said first truncated output vector of N bits from the first binary convolutional encoder; and the said second truncated output vector of N bits from the second binary convolutional encoder; (e) permuting the said vector of N parity bits, with respect to a second permutation, to create a vector of N permuted parity bits; (f) encoding the said vector of N permuted parity bits, by using a third binary convolutional encoder, to create an output vector, which the output is a third truncated output to a vector of N bits; and (g) setting a second internal binary vector of N bits equal to a result value from binary addition of: the said vector of N parity bits; and the said third truncated output vector of N bits from the third binary convolutional encoder; and wherein the said codeword value is assigned to equalize the value of the said vector of N parity bits for which a result value for the said second internal binary vector of N bits is equal to the value for the said first internal binary vector of N bits, and wherein an encoding to produce the said codeword value is a matrix multiplication of a binary generator matrix value, which is stored in a memory, multiplying the said given value of said binary vector of N information bits.