A range finding device, comprising a receiver that includes: a detector (74, 2812) configured to convert a received optical signal from an object into an analog signal; an analog filter (75, 80, 85,120, 2814, 2816, 2822, 2834), and; a delay estimator (140, 2834) configured to estimate a delay, characterized in that the analog filter (75, 80, 85, 120, 2814, 2816, 2822, 2834) is configured to apply a dc offset associated with the received analog signal over the duration of a received signal burst, the receiver further includes a zero-crossing detector (90, 110, 2818) configured to convert the received signal into binary logic states at successive sample points; an edge detector (475, 1815, 1960) configured to detect edges based on the logic states of the zero-crossing detector (90, 110, 2818) to generate and store one or more stored edge detected signal records (1005, 1025, 1060) corresponding to a derivative of the received signal; and a correlator (130, 2834) configured to compare a stored transmit code sequence with the one or more stored edge detected signal records (1005, 1025, 1060) to produce a derivative of a delayed correlation function (1010, 1050, 1075); and the delay estimator (140, 2834) is configured to estimate the delay based on a zero-crossing point (1020, 1055, 1070) of the derivative of the delayed correlation function (1010, 1050, 1075). a detector (74, 2812) configured to convert a received optical signal from an object into an analog signal; an analog filter (75, 80, 85,120, 2814, 2816, 2822, 2834), and; a delay estimator (140, 2834) configured to estimate a delay, characterized in that the analog filter (75, 80, 85, 120, 2814, 2816, 2822, 2834) is configured to apply a dc offset associated with the received analog signal over the duration of a received signal burst, the receiver further includes a zero-crossing detector (90, 110, 2818) configured to convert the received signal into binary logic states at successive sample points; an edge detector (475, 1815, 1960) configured to detect edges based on the logic states of the zero-crossing detector (90, 110, 2818) to generate and store one or more stored edge detected signal records (1005, 1025, 1060) corresponding to a derivative of the received signal; and a correlator (130, 2834) configured to compare a stored transmit code sequence with the one or more stored edge detected signal records (1005, 1025, 1060) to produce a derivative of a delayed correlation function (1010, 1050, 1075); and a zero-crossing detector (90, 110, 2818) configured to convert the received signal into binary logic states at successive sample points; an edge detector (475, 1815, 1960) configured to detect edges based on the logic states of the zero-crossing detector (90, 110, 2818) to generate and store one or more stored edge detected signal records (1005, 1025, 1060) corresponding to a derivative of the received signal; and a correlator (130, 2834) configured to compare a stored transmit code sequence with the one or more stored edge detected signal records (1005, 1025, 1060) to produce a derivative of a delayed correlation function (1010, 1050, 1075); and the delay estimator (140, 2834) is configured to estimate the delay based on a zero-crossing point (1020, 1055, 1070) of the derivative of the delayed correlation function (1010, 1050, 1075).