A global navigation satellite system "GNSS" receiver comprising: a ranging code correlation function detection system comprising: a correlation block configured to correlate a digitized GNSS signal with a corresponding ranging code at each of a plurality of different offsets from a current estimate of a code delay to generate a plurality of correlation data points (1102, 1104, 1106); and an interpolation filter configured to interpolate the plurality of correlation data points based on the current estimate of the code delay to generate at least one estimated correlation data point (1108, 1110, 1112, 1402, 1404, 1406) that lies between two of the correlation data points (1102, 1104, 1106), wherein the plurality of correlation data points and the at least one estimated correlation data point provide a representation of a ranging code correlation function of the digitized GNSS signal, wherein the current estimate of the code delay comprises a whole component specifying a whole number of samples of the digitized GNSS signal and a partial portion specifying a fraction of a sample of the digitized GNSS signal; and wherein the interpolation filter is configured to generate the at least one estimated correlation data point (1108, 1110, 1112) by generating an estimated correlation data point that corresponds to an offset that is shifted by the fraction of a sample from one of the different offsets; characterised in that the interpolation filter is a polyphase finite impulse response interpolation filter comprising a coefficient lookup table, a linear interpolator and a finite impulse response filter, wherein each row of the coefficient lookup table stores a set of coefficients corresponding to a particular fractional sample offset, wherein the polyphase finite impulse response interpolation filter is configured to use the X most significant bits of the partial portion, wherein X is an integer, to select the two sets of coefficients in the coefficient lookup table corresponding to the offsets that are closest to the fraction of a sample, wherein the linear interpolator is configured to perform a linear interpolation between the first and second set of coefficients received from the coefficient lookup table based on the remaining bits of the partial portion to generate a final set of coefficients, and wherein the FIR filter is configured to use the final set of coefficients to generate the one or more estimated correlation data points from the correlation data points output by the correlation block. a correlation block configured to correlate a digitized GNSS signal with a corresponding ranging code at each of a plurality of different offsets from a current estimate of a code delay to generate a plurality of correlation data points (1102, 1104, 1106); and an interpolation filter configured to interpolate the plurality of correlation data points based on the current estimate of the code delay to generate at least one estimated correlation data point (1108, 1110, 1112, 1402, 1404, 1406) that lies between two of the correlation data points (1102, 1104, 1106), wherein the plurality of correlation data points and the at least one estimated correlation data point provide a representation of a ranging code correlation function of the digitized GNSS signal, wherein the current estimate of the code delay comprises a whole component specifying a whole number of samples of the digitized GNSS signal and a partial portion specifying a fraction of a sample of the digitized GNSS signal; and wherein the interpolation filter is configured to generate the at least one estimated correlation data point (1108, 1110, 1112) by generating an estimated correlation data point that corresponds to an offset that is shifted by the fraction of a sample from one of the different offsets; characterised in that the interpolation filter is a polyphase finite impulse response interpolation filter comprising a coefficient lookup table, a linear interpolator and a finite impulse response filter, wherein each row of the coefficient lookup table stores a set of coefficients corresponding to a particular fractional sample offset, wherein the polyphase finite impulse response interpolation filter is configured to use the X most significant bits of the partial portion, wherein X is an integer, to select the two sets of coefficients in the coefficient lookup table corresponding to the offsets that are closest to the fraction of a sample, wherein the linear interpolator is configured to perform a linear interpolation between the first and second set of coefficients received from the coefficient lookup table based on the remaining bits of the partial portion to generate a final set of coefficients, and wherein the FIR filter is configured to use the final set of coefficients to generate the one or more estimated correlation data points from the correlation data points output by the correlation block.