An apparatus for demodulating code shift keying, CSK, data, the apparatus comprising: a Global Navigation Satellite Signal, GNSS, receiver including a processor, the GNSS receiver configured to receive a signal including a predetermined code modulated by CSK to represent an N bit symbol; and a CSK demodulation subsystem of the GNSS receiver and executed by the processor, the CSK demodulation subsystem configured to: generate a different combinational code for each different bit position of the N bit symbol, wherein each combinational code is a chip-by-chip linear combination of a group of a plurality of receiver codes, wherein each of the plurality of receiver codes is the predetermined code shifted a different number of chips, and wherein each receiver code of the group, utilized in the linear combination to generate a particular combinational code for a particular bit position of the N bit symbol, corresponds to a particular N bit symbol of a plurality of different N bit symbols that are set to a same value at the particular bit position, correlate the received signal with each combinational code generated for each bit position of the N bit symbol to produce a binary value; and determine the N bit symbol, which is the demodulated CSK data, based on the binary value produced from the correlation of the received signal with each combinational code generated for each different bit position of the N bit symbol. a Global Navigation Satellite Signal, GNSS, receiver including a processor, the GNSS receiver configured to receive a signal including a predetermined code modulated by CSK to represent an N bit symbol; and a CSK demodulation subsystem of the GNSS receiver and executed by the processor, the CSK demodulation subsystem configured to: generate a different combinational code for each different bit position of the N bit symbol, wherein each combinational code is a chip-by-chip linear combination of a group of a plurality of receiver codes, wherein each of the plurality of receiver codes is the predetermined code shifted a different number of chips, and wherein each receiver code of the group, utilized in the linear combination to generate a particular combinational code for a particular bit position of the N bit symbol, corresponds to a particular N bit symbol of a plurality of different N bit symbols that are set to a same value at the particular bit position, correlate the received signal with each combinational code generated for each bit position of the N bit symbol to produce a binary value; and determine the N bit symbol, which is the demodulated CSK data, based on the binary value produced from the correlation of the received signal with each combinational code generated for each different bit position of the N bit symbol. generate a different combinational code for each different bit position of the N bit symbol, wherein each combinational code is a chip-by-chip linear combination of a group of a plurality of receiver codes, wherein each of the plurality of receiver codes is the predetermined code shifted a different number of chips, and wherein each receiver code of the group, utilized in the linear combination to generate a particular combinational code for a particular bit position of the N bit symbol, corresponds to a particular N bit symbol of a plurality of different N bit symbols that are set to a same value at the particular bit position, correlate the received signal with each combinational code generated for each bit position of the N bit symbol to produce a binary value; and determine the N bit symbol, which is the demodulated CSK data, based on the binary value produced from the correlation of the received signal with each combinational code generated for each different bit position of the N bit symbol.