a data coding method produces codewords with a scheme that changes for different codewords , and decodes codewords with a scheme that remains constant for all codewords . the coding method receives k user bits , codes the user bits to produce k + r output bits , corrupts any one of the output bits , and accurately reproduces at least k − r − 1 user bits . the data coding method may code an input sequence to produce a codeword c =, c , . . . , c , c0 , c1 , . . . , c ), where for 0 ≦ i ≦ k − 1 , symbols are determined according to the following : c f 0 = c = b ⊕ c f 1 ⊕ c f 2 ⊕ . . . ⊕ c fr ii where c i and b i are corresponding user data and codeword bits at time i . in this case , for each of a plurality of input sequences , appropriate initial conditions , . . . , c , c )= s are independently selecting to satisfy a predetermined property in the codeword coded according to ii . codewords coded using the appropriate initial conditions are output . for each codeword , the appropriate initial conditions are appended to the codeword coded therefrom .