A method for tracking a binary offset carrier navigation signal in a global navigation satellite system (GNSS) receiver by locating the main correlation peak of the binary offset carrier signal, wherein the binary offset carrier autocorrelation function is composed of a main peak, corresponding to zero offset, and multiple side peaks, each of known width, the method comprising: producing a set of N correlations from the binary offset carrier navigation signal at a time instant; using a first set of correlations, derived from the set of N correlations, to determine a coarse location of the main peak, so as to discriminate the main peak from the side peaks, wherein the determination is based in part on a post-correlation maximum-likelihood estimato based in part on a difference between the receiver complex correlation vector and an expected correlation vector using the covariance matrix of the complex coloured noise present at post correlation level for the set of N correlations, the covariance coloured noise matrix being dependent on the binary offset carrier signal to be tracked; and using a second set of correlations, derived from the set of N correlations, to determine a fine location of the main peak, wherein the second set of correlations are within said known width of the main peak, wherein the determination is based in part on a post-correlation maximum-likelihood estimator based in part on a difference between the receiver correlation vector and the expected correlation vector using the covariance matrix of the complex coloured noise present at post correlation level for the set of N correlations, and wherein the coarse location of the main peak from the first set of correlations is used to constrain the post correlation maximum-likelihood estimator used to determine the fine location of the main peak thereby constraining the fine location from the second set of correlations, such that the fine location is determined for said main peak to perform said tracking, wherein the expected correlation vector is for a given code delay and accounts for receiver effects. producing a set of N correlations from the binary offset carrier navigation signal at a time instant; using a first set of correlations, derived from the set of N correlations, to determine a coarse location of the main peak, so as to discriminate the main peak from the side peaks, wherein the determination is based in part on a post-correlation maximum-likelihood estimato based in part on a difference between the receiver complex correlation vector and an expected correlation vector using the covariance matrix of the complex coloured noise present at post correlation level for the set of N correlations, the covariance coloured noise matrix being dependent on the binary offset carrier signal to be tracked; and using a second set of correlations, derived from the set of N correlations, to determine a fine location of the main peak, wherein the second set of correlations are within said known width of the main peak, wherein the determination is based in part on a post-correlation maximum-likelihood estimator based in part on a difference between the receiver correlation vector and the expected correlation vector using the covariance matrix of the complex coloured noise present at post correlation level for the set of N correlations, and wherein the coarse location of the main peak from the first set of correlations is used to constrain the post correlation maximum-likelihood estimator used to determine the fine location of the main peak thereby constraining the fine location from the second set of correlations, such that the fine location is determined for said main peak to perform said tracking, wherein the expected correlation vector is for a given code delay and accounts for receiver effects.