A method for forward error correction, FEC, decoding, comprising: decoding, by a receiver device, a spread spectrum coded stream of information including a plurality of codeword blocks, each codeword constituting a spread spectrum codeword, i.e. a chip, wherein the decoding comprises: determining (510; 610) a number of invalid spread spectrum codewords, signaling occurrence of a channel error, in a particular block of codewords; if the number of invalid spread spectrum codewords exceeds a first particular number, demapping (590; 620) the particular block of codewords into a block of bits and discarding (580; 620) parity codewords of the particular block of codewords; and if the number of invalid spread spectrum codewords exceeds a third particular number but is smaller than or equal to the first particular number, computing (524, 540; 630) a true subset of syndrome components using one or more Gray coding enumerations with an update procedure (527, 550, 560, 570) for the subset of syndrome components, if all of the syndrome components are zero (526, 545, 551, 561, 571) setting at least one correct bit (529, 531, 546, 552, 562, 572), demapping the particular block of codewords, and discarding parity codewords of the particular block of codeword; and otherwise continuing Gray coding enumeration. decoding, by a receiver device, a spread spectrum coded stream of information including a plurality of codeword blocks, each codeword constituting a spread spectrum codeword, i.e. a chip, wherein the decoding comprises: determining (510; 610) a number of invalid spread spectrum codewords, signaling occurrence of a channel error, in a particular block of codewords; if the number of invalid spread spectrum codewords exceeds a first particular number, demapping (590; 620) the particular block of codewords into a block of bits and discarding (580; 620) parity codewords of the particular block of codewords; and if the number of invalid spread spectrum codewords exceeds a third particular number but is smaller than or equal to the first particular number, computing (524, 540; 630) a true subset of syndrome components using one or more Gray coding enumerations with an update procedure (527, 550, 560, 570) for the subset of syndrome components, if all of the syndrome components are zero (526, 545, 551, 561, 571) setting at least one correct bit (529, 531, 546, 552, 562, 572), demapping the particular block of codewords, and discarding parity codewords of the particular block of codeword; and otherwise continuing Gray coding enumeration. determining (510; 610) a number of invalid spread spectrum codewords, signaling occurrence of a channel error, in a particular block of codewords; if the number of invalid spread spectrum codewords exceeds a first particular number, demapping (590; 620) the particular block of codewords into a block of bits and discarding (580; 620) parity codewords of the particular block of codewords; and if the number of invalid spread spectrum codewords exceeds a third particular number but is smaller than or equal to the first particular number, computing (524, 540; 630) a true subset of syndrome components using one or more Gray coding enumerations with an update procedure (527, 550, 560, 570) for the subset of syndrome components, if all of the syndrome components are zero (526, 545, 551, 561, 571) setting at least one correct bit (529, 531, 546, 552, 562, 572), demapping the particular block of codewords, and discarding parity codewords of the particular block of codeword; and otherwise continuing Gray coding enumeration.