Fetched “CurRnxN.nav” from ftp://ftp.trimble.com/pub/eph/and had a look at the raw data. The .nav data file is formatted as Receiver Independent Exchange Format (RINEX) 2.10 and contains GPS navigation methods.  

SV accuracy is defined in Broadcast Orbit Record 6 and this value is used as the URA at line 1084 of rrlpserver.erl.

The problem seems to be that SV accuracy in meters is being used as the URA index.  

The confusion arises due to differences between the Receiver Independent Exchange Format (RINEX) 2.10 format and Interface Specification IS-GPS-200 (http://www.gps.gov/technical/icwg/). IS-GPS-200 section 20.3.3.3.1.3 states: ”SV Accuracy - Bits 13 through 16 of word three shall give the URA index of the SV. The URA index (N) is an integer in the range of 0 through 15.”

Hence I think the RRLP server needs to be  modified to support RINEX and specifically to add a mapping from SV accuracy to URA index like in the code example here:

http://www.gpstk.org/doxygen/GPS__URA_8hpp-source.html#l00109

For now I changed line 1084 in rrlpserver.erl  to assume a URA index of 6 e.g. SV accuracy in the range 13.65 – 24 meters:

stuff("ephemURA", nmth(7,1,Tokens), AdjustTable),

Change to:

stuff("ephemURA", “6” , AdjustTable),

Can any Erlang programmers help fix this?