diff --git a/app/appcmn/serioptdlg.dfm b/app/appcmn/serioptdlg.dfm
index 5be7c5538c3edb63f76068d4e2063b5ffa645ca6..af0d5010ff9e3476d62da68b20123114d79190ae 100644
--- a/app/appcmn/serioptdlg.dfm
+++ b/app/appcmn/serioptdlg.dfm
@@ -79,12 +79,11 @@ object SerialOptDialog: TSerialOptDialog
     TabOrder = 0
   end
   object BitRate: TComboBox
-    Left = 74
-    Top = 32
+    Left = 76
+    Top = 29
     Width = 77
     Height = 21
     DropDownCount = 12
-    ItemIndex = 5
     TabOrder = 3
     Text = '115200'
     Items.Strings = (
@@ -98,7 +97,8 @@ object SerialOptDialog: TSerialOptDialog
       '38400'
       '57600'
       '115200'
-      '230400')
+      '230400'
+      '460800')
   end
   object Port: TComboBox
     Left = 74
diff --git a/app/convbin/gcc/makefile b/app/convbin/gcc/makefile
index 9cbb435ddff86737913ec50a634acf79a7c997f8..e51b5eb6967af2f247daa5650c6e1f8d8fe78920 100644
--- a/app/convbin/gcc/makefile
+++ b/app/convbin/gcc/makefile
@@ -7,7 +7,7 @@ BINDIR = /usr/local/bin
 SRC    = ../../../src
 
 INCLUDE= -I$(SRC)
-OPTIONS= -DTRACE -DENAGLO -DENAQZS -DENAGAL -DENACMP -DENAIRN -DNFREQ=7 -DNEXOBS=3
+OPTIONS= -DTRACE -DENAGLO -DENAQZS -DENAGAL -DENACMP -DENAIRN -DNFREQ=4 -DNEXOBS=3
 
 CFLAGS = -O3 -ansi -pedantic -Wall -Wno-unused-but-set-variable $(INCLUDE) $(OPTIONS) -g
 
diff --git a/app/convbin/msc/msc.vcxproj b/app/convbin/msc/msc.vcxproj
index ca690dd66ec21e295399e7e3e78ce907331c8745..98dc8d9c2e79e87dcea65737b0ee1f3810ed4ed4 100644
--- a/app/convbin/msc/msc.vcxproj
+++ b/app/convbin/msc/msc.vcxproj
@@ -53,7 +53,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;TRACE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -76,7 +76,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;TRACE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <PrecompiledHeader>
       </PrecompiledHeader>
diff --git a/app/rnx2rtkp/gcc/makefile b/app/rnx2rtkp/gcc/makefile
index a34fdc3e0027659e40c7ad86dd1b99d4712f5190..0a0a31e7ba8596df2faada2d6586ad79b9c3c232 100644
--- a/app/rnx2rtkp/gcc/makefile
+++ b/app/rnx2rtkp/gcc/makefile
@@ -4,7 +4,7 @@ BINDIR  = /usr/local/bin
 SRC     = ../../../src
 
 #OPTS    = -DTRACE -DENAGLO -DENAQZS -DENAGAL -DENACMP -DENAIRN -DNFREQ=3
-OPTS    = -DTRACE -DENAGLO  -DENAGAL -DENACMP  -DNFREQ=3
+OPTS    = -DTRACE -DENAGLO  -DENAGAL -DENACMP  -DNFREQ=4   -DNEXOBS=3
 #OPTS    = -DENAGLO -DENAQZS -DENAGAL -DENACMP -DNFREQ=2
 
 # for no lapack
diff --git a/app/rnx2rtkp/msc/msc.vcxproj b/app/rnx2rtkp/msc/msc.vcxproj
index 69c561b74d0bd2cb32534ddae079954d94321667..89e08b0bc8a6414297a6754f0b7e42278b32bbbe 100644
--- a/app/rnx2rtkp/msc/msc.vcxproj
+++ b/app/rnx2rtkp/msc/msc.vcxproj
@@ -53,7 +53,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;TRACE;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;TRACE;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -80,7 +80,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;TRACE;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;TRACE;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <PrecompiledHeader>
       </PrecompiledHeader>
diff --git a/app/rtkconv/codeopt.cpp b/app/rtkconv/codeopt.cpp
index 9b4882e3be062546988ad7388842dfca2fbf2ced..df21713e1893b4c12cf1c5b689242456105f775c 100644
--- a/app/rtkconv/codeopt.cpp
+++ b/app/rtkconv/codeopt.cpp
@@ -323,17 +323,17 @@ void __fastcall TCodeOptDialog::UpdateEnable(void)
 	E24->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L5);
 	E25->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L5);
 	E26->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L5);
-	E27->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L7);
-	E28->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L7);
-	E29->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L7);
-	E30->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L6);
-	E31->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L6);
-	E32->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L6);
-	E33->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L6);
-	E34->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L6);
-	E37->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L8);
-	E38->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L8);
-	E39->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_L8);
+	E27->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E5b);
+	E28->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E5b);
+	E29->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E5b);
+	E30->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E6);
+	E31->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E6);
+	E32->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E6);
+	E33->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E6);
+	E34->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E6);
+	E37->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E5ab);
+	E38->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E5ab);
+	E39->Enabled=(NavSys&SYS_GAL)&&(FreqType&FREQTYPE_E5ab);
 	J01->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L1);
 	J07->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L1);
 	J08->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L1);
@@ -342,29 +342,29 @@ void __fastcall TCodeOptDialog::UpdateEnable(void)
 	J16->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L2);
 	J17->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L2);
 	J18->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L2);
-	J24->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L5);
-	J25->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L5);
-	J26->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L5);
-	J35->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L6);
-	J36->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L6);
-	J33->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_L6);
+	J24->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_E5b);
+	J25->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_E5b);
+	J26->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_E5b);
+	J35->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_E6);
+	J36->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_E6);
+	J33->Enabled=(NavSys&SYS_QZS)&&(FreqType&FREQTYPE_E6);
 	C47->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L2);
 	C48->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L2);
 	C12->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L2);
-	C27->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L7);
-	C28->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L7);
-	C29->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L7);
-	C42->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L6);
-	C43->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L6);
-	C33->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_L6);
+	C27->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_E5b);
+	C28->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_E5b);
+	C29->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_E5b);
+	C42->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_E6);
+	C43->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_E6);
+	C33->Enabled=(NavSys&SYS_CMP)&&(FreqType&FREQTYPE_E6);
 	I49->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L5);
 	I50->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L5);
 	I51->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L5);
 	I26->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L5);
-	I52->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L9);
-	I53->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L9);
-	I54->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L9);
-	I55->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_L9);
+	I52->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_S);
+	I53->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_S);
+	I54->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_S);
+	I55->Enabled=(NavSys&SYS_IRN)&&(FreqType&FREQTYPE_S);
 	S01->Enabled=(NavSys&SYS_SBS)&&(FreqType&FREQTYPE_L1);
 	S24->Enabled=(NavSys&SYS_SBS)&&(FreqType&FREQTYPE_L5);
 	S25->Enabled=(NavSys&SYS_SBS)&&(FreqType&FREQTYPE_L5);
diff --git a/app/rtkconv/convopt.cpp b/app/rtkconv/convopt.cpp
index 43a2d84c92ce17602481557ca59c4325b80de086..d92d3a36488695f74e131a538aa03c687417d1b0 100644
--- a/app/rtkconv/convopt.cpp
+++ b/app/rtkconv/convopt.cpp
@@ -78,11 +78,11 @@ void __fastcall TConvOptDialog::FormShow(TObject *Sender)
 	Obs4->Checked=MainWindow->ObsType&OBSTYPE_SNR;
 	Freq1->Checked=MainWindow->FreqType&FREQTYPE_L1;
 	Freq2->Checked=MainWindow->FreqType&FREQTYPE_L2;
-	Freq3->Checked=MainWindow->FreqType&FREQTYPE_L5;
-	Freq4->Checked=MainWindow->FreqType&FREQTYPE_L6;
-	Freq5->Checked=MainWindow->FreqType&FREQTYPE_L7;
-	Freq6->Checked=MainWindow->FreqType&FREQTYPE_L8;
-	Freq7->Checked=MainWindow->FreqType&FREQTYPE_L9;
+	Freq3->Checked=MainWindow->FreqType&FREQTYPE_E5b;
+	Freq4->Checked=MainWindow->FreqType&FREQTYPE_L5;
+	Freq5->Checked=MainWindow->FreqType&FREQTYPE_E6;
+	Freq6->Checked=MainWindow->FreqType&FREQTYPE_E5ab;
+	Freq7->Checked=MainWindow->FreqType&FREQTYPE_S;
 	ExSats->Text=MainWindow->ExSats;
 	TraceLevel->ItemIndex=MainWindow->TraceLevel;
 	ChkSepNav->Checked=MainWindow->SepNav;
@@ -139,11 +139,11 @@ void __fastcall TConvOptDialog::BtnOkClick(TObject *Sender)
 	if (Obs4->Checked) obstype|=OBSTYPE_SNR;
 	if (Freq1->Checked) freqtype|=FREQTYPE_L1;
 	if (Freq2->Checked) freqtype|=FREQTYPE_L2;
-	if (Freq3->Checked) freqtype|=FREQTYPE_L5;
-	if (Freq4->Checked) freqtype|=FREQTYPE_L6;
-	if (Freq5->Checked) freqtype|=FREQTYPE_L7;
-	if (Freq6->Checked) freqtype|=FREQTYPE_L8;
-	if (Freq7->Checked) freqtype|=FREQTYPE_L9;
+	if (Freq3->Checked) freqtype|=FREQTYPE_E5b;
+	if (Freq4->Checked) freqtype|=FREQTYPE_L5;
+	if (Freq5->Checked) freqtype|=FREQTYPE_E6;
+	if (Freq6->Checked) freqtype|=FREQTYPE_E5ab;
+	if (Freq7->Checked) freqtype|=FREQTYPE_S;
 	MainWindow->NavSys=navsys;
 	MainWindow->ObsType=obstype;
 	MainWindow->FreqType=freqtype;
@@ -181,11 +181,11 @@ void __fastcall TConvOptDialog::BtnMaskClick(TObject *Sender)
 	if (Nav7->Checked) CodeOptDialog->NavSys|=SYS_IRN;
 	if (Freq1->Checked) CodeOptDialog->FreqType|=FREQTYPE_L1;
 	if (Freq2->Checked) CodeOptDialog->FreqType|=FREQTYPE_L2;
-	if (Freq3->Checked) CodeOptDialog->FreqType|=FREQTYPE_L5;
-	if (Freq4->Checked) CodeOptDialog->FreqType|=FREQTYPE_L6;
-	if (Freq5->Checked) CodeOptDialog->FreqType|=FREQTYPE_L7;
-	if (Freq6->Checked) CodeOptDialog->FreqType|=FREQTYPE_L8;
-	if (Freq7->Checked) CodeOptDialog->FreqType|=FREQTYPE_L9;
+	if (Freq3->Checked) CodeOptDialog->FreqType|=FREQTYPE_E5b;
+	if (Freq4->Checked) CodeOptDialog->FreqType|=FREQTYPE_L5;
+	if (Freq5->Checked) CodeOptDialog->FreqType|=FREQTYPE_E6;
+	if (Freq6->Checked) CodeOptDialog->FreqType|=FREQTYPE_E5ab;
+	if (Freq7->Checked) CodeOptDialog->FreqType|=FREQTYPE_S;
 	CodeOptDialog->ShowModal();
 }
 //---------------------------------------------------------------------------
diff --git a/app/rtkconv/convopt.dfm b/app/rtkconv/convopt.dfm
index 2fbd836e183b97bc151005dab834a617d9ac8cf4..700c41fa4362b9fd1b1dbd570baa1942d531f469 100644
--- a/app/rtkconv/convopt.dfm
+++ b/app/rtkconv/convopt.dfm
@@ -432,7 +432,7 @@ object ConvOptDialog: TConvOptDialog
       Top = 14
       Width = 53
       Height = 17
-      Caption = 'L5/3'
+      Caption = 'E5b'
       TabOrder = 2
     end
     object Freq4: TCheckBox
@@ -440,7 +440,7 @@ object ConvOptDialog: TConvOptDialog
       Top = 14
       Width = 45
       Height = 17
-      Caption = 'L6'
+      Caption = 'L5'
       TabOrder = 3
     end
     object Freq5: TCheckBox
@@ -448,23 +448,23 @@ object ConvOptDialog: TConvOptDialog
       Top = 14
       Width = 39
       Height = 17
-      Caption = 'L7'
+      Caption = 'E6'
       TabOrder = 4
     end
     object Freq6: TCheckBox
-      Left = 177
+      Left = 174
       Top = 14
-      Width = 31
+      Width = 40
       Height = 17
-      Caption = 'L8'
+      Caption = 'E5ab'
       TabOrder = 5
     end
     object Freq7: TCheckBox
-      Left = 209
+      Left = 218
       Top = 14
       Width = 31
       Height = 17
-      Caption = 'L9'
+      Caption = 'S'
       TabOrder = 6
     end
   end
diff --git a/app/rtkconv/rtkconv.cbproj b/app/rtkconv/rtkconv.cbproj
index 9fba7f6e9c900ebd126515d05203e5046f5beeed..56cce9c95769d4db4c19242b8bffc919f817c18e 100644
--- a/app/rtkconv/rtkconv.cbproj
+++ b/app/rtkconv/rtkconv.cbproj
@@ -6,7 +6,7 @@
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Release</Config>
         <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>18.2</ProjectVersion>
+        <ProjectVersion>18.4</ProjectVersion>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
         <TargetedPlatforms>1</TargetedPlatforms>
         <AppType>Application</AppType>
@@ -93,10 +93,10 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <OutputExt>exe</OutputExt>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(TASM_Defines)</TASM_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=4;$(TASM_Defines)</TASM_Defines>
         <BCC_UserSuppliedOptions> -tWM</BCC_UserSuppliedOptions>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
-        <BCC_Defines>WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NEXOBS=3;NFREQ=7;$(BCC_Defines)</BCC_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NEXOBS=3;NFREQ=4;$(BRCC_Defines)</BRCC_Defines>
+        <BCC_Defines>WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NEXOBS=3;NFREQ=4;$(BCC_Defines)</BCC_Defines>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <IncludePath>$(BDSINCLUDE)\windows\vcl;$(IncludePath)</IncludePath>
         <VerInfo_Locale>1033</VerInfo_Locale>
@@ -106,9 +106,9 @@
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;NEXOBS=3;NFREQ=6;$(BCC_Defines)</BCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NEXOBS=3;NFREQ=4;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NEXOBS=3;NFREQ=4;$(BRCC_Defines)</BRCC_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;NEXOBS=3;NFREQ=4;$(BCC_Defines)</BCC_Defines>
         <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
@@ -323,15 +323,15 @@
             <BuildOrder>22</BuildOrder>
             <BuildOrder>12</BuildOrder>
         </CppCompile>
-        <FormResources Include="codeopt.dfm"/>
         <FormResources Include="..\appcmn\vieweropt.dfm"/>
-        <FormResources Include="convopt.dfm"/>
+        <FormResources Include="codeopt.dfm"/>
         <FormResources Include="convmain.dfm"/>
-        <FormResources Include="..\appcmn\viewer.dfm"/>
-        <FormResources Include="..\appcmn\confdlg.dfm"/>
+        <FormResources Include="convopt.dfm"/>
         <FormResources Include="..\appcmn\aboutdlg.dfm"/>
-        <FormResources Include="..\appcmn\timedlg.dfm"/>
+        <FormResources Include="..\appcmn\confdlg.dfm"/>
         <FormResources Include="..\appcmn\keydlg.dfm"/>
+        <FormResources Include="..\appcmn\timedlg.dfm"/>
+        <FormResources Include="..\appcmn\viewer.dfm"/>
         <FormResources Include="startdlg.dfm"/>
         <BuildConfiguration Include="Release">
             <Key>Cfg_2</Key>
@@ -398,7 +398,10 @@
                     <Parameters Name="LoadAllSymbols">True</Parameters>
                     <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
                 </Parameters>
-                <Excluded_Packages/>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k250.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp250.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                </Excluded_Packages>
                 <ProjectProperties>
                     <ProjectProperties Name="AutoShowDeps">False</ProjectProperties>
                     <ProjectProperties Name="ManagePaths">True</ProjectProperties>
@@ -444,9 +447,9 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="Debug_Build\rtkconv.exe" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="..\..\src\rcv\comnav.c" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win32">
-                        <RemoteName>rtkconv.exe</RemoteName>
+                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
@@ -455,7 +458,13 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rtkcmn.c" Configuration="Debug" Class="ProjectFile">
+                <DeployFile LocalName="Debug_Build\rtkconv.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>rtkconv.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="rtkconv.res" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -479,7 +488,7 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="rtkconv.res" Configuration="Debug" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\rtkcmn.c" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -491,7 +500,7 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\comnav.c" Configuration="Debug" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\rcv\swiftnav.c" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -503,7 +512,7 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\swiftnav.c" Configuration="Debug" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\rcvraw.c" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -515,12 +524,6 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcvraw.c" Configuration="Debug" Class="ProjectFile">
-                    <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
                 <DeployFile LocalName="..\..\src\preceph.c" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
diff --git a/app/rtknavi/mondlg.cpp b/app/rtknavi/mondlg.cpp
index 1c28a5065e1034ba749d6a3fa23d690e042c96c1..b5e75e07025e70614a9a10e0533767b57c3592ad 100644
--- a/app/rtknavi/mondlg.cpp
+++ b/app/rtknavi/mondlg.cpp
@@ -367,7 +367,7 @@ void __fastcall TMonitorDialog::ShowRtk(void)
 	AnsiString sol[]={"-","Fix","Float","SBAS","DGPS","Single","PPP",""};
 	AnsiString mode[]={"Single","DGPS","Kinematic","Static","Static-Start","Moving-Base",
 					   "Fixed","PPP-Kinematic","PPP-Static",""};
-	AnsiString freq[]={"-","L1","L1+L2","L1+L2+L5","L1+L2+L5+L6","L1+L2+L5+L6+L7","L1+L2+L5+L6+L7+L8",""};
+	AnsiString freq[]={"-","L1","L1+L2","L1+L2+E5b","L1+L2+E5b+L5","L1+L2+E5b+L5+E6","L1+L2+E5b+L5+E6+E5ab",""};
 	double *del,*off1,*off2,runtime,rt[3]={0},dop[4]={0};
 	double azel[MAXSAT*2],pos[3],vel[3];
 	int i,j,k,thread,cycle,state,rtkstat,nsat0,nsat1,prcout,nave;
diff --git a/app/rtknavi/naviopt.cpp b/app/rtknavi/naviopt.cpp
index 67fc116585a849cb21ebf89b3f6b11d3b8d3aeed..4964d537334ce4d4a57c412dc8371e8f666347ba 100644
--- a/app/rtknavi/naviopt.cpp
+++ b/app/rtknavi/naviopt.cpp
@@ -93,7 +93,8 @@ __fastcall TOptDialog::TOptDialog(TComponent* Owner)
 	: TForm(Owner)
 {
 	AnsiString label,s;
-	int freq[]={1,2,5,6,7,8,9},nglo=MAXPRNGLO,ngal=MAXPRNGAL,nqzs=MAXPRNQZS;
+	const char *freqs[]={"L1","L2","E5b","L5","E6","E5ab"};
+	int nglo=MAXPRNGLO,ngal=MAXPRNGAL,nqzs=MAXPRNQZS;
 	int ncmp=MAXPRNCMP,nirn=MAXPRNIRN;
 	PrcOpt=prcopt_default;
 	SolOpt=solopt_default;
@@ -102,7 +103,7 @@ __fastcall TOptDialog::TOptDialog(TComponent* Owner)
 	
 	Freq->Items->Clear();
 	for (int i=0;i<NFREQ;i++) {
-		label=label+(i>0?"+":"")+s.sprintf("L%d",freq[i]);
+		label=label+(i>0?"+":"")+s.sprintf("%s",freqs[i]);
 		Freq->Items->Add(label);
 	}
 	if (nglo<=0) NavSys2->Enabled=false;
@@ -717,7 +718,6 @@ void __fastcall TOptDialog::LoadOpt(AnsiString file)
 	
 	PosMode		 ->ItemIndex	=prcopt.mode;
 	Freq		 ->ItemIndex	=prcopt.nf>NFREQ-1?NFREQ-1:prcopt.nf-1;
-	Solution	 ->ItemIndex	=prcopt.soltype;
 	ElMask		 ->Text			=s.sprintf("%.0f",prcopt.elmin*R2D);
 	DynamicModel ->ItemIndex	=prcopt.dynamics;
 	TideCorr	 ->ItemIndex	=prcopt.tidecorr;
@@ -940,7 +940,7 @@ void __fastcall TOptDialog::SaveOpt(AnsiString file)
 
 	prcopt.mode		=PosMode	 ->ItemIndex;
 	prcopt.nf		=Freq		 ->ItemIndex+1;
-	prcopt.soltype	=Solution	 ->ItemIndex;
+	prcopt.soltype	=0;   /* forward */
 	prcopt.elmin	=str2dbl(ElMask	->Text)*D2R;
 	prcopt.dynamics	=DynamicModel->ItemIndex;
 	prcopt.tidecorr	=TideCorr	 ->ItemIndex;
@@ -1071,7 +1071,6 @@ void __fastcall TOptDialog::UpdateEnable(void)
 	int ar=rtk||ppp;
 	
 	Freq           ->Enabled=rel;
-	Solution       ->Enabled=false;
 	DynamicModel   ->Enabled=rel;
 	TideCorr       ->Enabled=rel||ppp;
 	PosOpt1        ->Enabled=ppp;
diff --git a/app/rtknavi/naviopt.dfm b/app/rtknavi/naviopt.dfm
index f8ef97fe7f71f00c502d812de4f67b2e1ae193ec..d0b2d211c22e5b492cb03a2543e36d8b1683b9ff 100644
--- a/app/rtknavi/naviopt.dfm
+++ b/app/rtknavi/naviopt.dfm
@@ -57,11 +57,15 @@ object OptDialog: TOptDialog
     Top = 0
     Width = 413
     Height = 353
-    ActivePage = TabSheet2
+    ActivePage = TabSheet1
     Align = alTop
     TabOrder = 4
     object TabSheet1: TTabSheet
       Caption = 'Setting&1'
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Label3: TLabel
         Left = 24
         Top = 73
@@ -93,9 +97,9 @@ object OptDialog: TOptDialog
       object LabelFreq: TLabel
         Left = 24
         Top = 29
-        Width = 119
+        Width = 58
         Height = 13
-        Caption = 'Frequencies / Filter Type'
+        Caption = 'Frequencies'
       end
       object LabelElMask: TLabel
         Left = 24
@@ -126,7 +130,7 @@ object OptDialog: TOptDialog
         Caption = 'GPS'
         Checked = True
         State = cbChecked
-        TabOrder = 9
+        TabOrder = 8
       end
       object DynamicModel: TComboBox
         Left = 248
@@ -135,7 +139,7 @@ object OptDialog: TOptDialog
         Height = 21
         Style = csDropDownList
         ItemIndex = 0
-        TabOrder = 3
+        TabOrder = 2
         Text = 'OFF'
         Items.Strings = (
           'OFF'
@@ -148,7 +152,7 @@ object OptDialog: TOptDialog
         Height = 21
         Style = csDropDownList
         ItemIndex = 0
-        TabOrder = 5
+        TabOrder = 4
         Text = 'OFF'
         Items.Strings = (
           'OFF'
@@ -167,7 +171,7 @@ object OptDialog: TOptDialog
         Height = 21
         Style = csDropDownList
         ItemIndex = 0
-        TabOrder = 6
+        TabOrder = 5
         Text = 'OFF'
         Items.Strings = (
           'OFF'
@@ -202,7 +206,7 @@ object OptDialog: TOptDialog
       object Freq: TComboBox
         Left = 248
         Top = 26
-        Width = 75
+        Width = 152
         Height = 21
         Style = csDropDownList
         ItemIndex = 1
@@ -213,21 +217,6 @@ object OptDialog: TOptDialog
           'L1'
           'L1+L2')
       end
-      object Solution: TComboBox
-        Left = 325
-        Top = 26
-        Width = 75
-        Height = 21
-        Style = csDropDownList
-        Enabled = False
-        ItemIndex = 0
-        TabOrder = 2
-        Text = 'Forward'
-        Items.Strings = (
-          'Forward'
-          'Backward'
-          'Combined')
-      end
       object SatEphem: TComboBox
         Left = 248
         Top = 136
@@ -235,7 +224,7 @@ object OptDialog: TOptDialog
         Height = 21
         Style = csDropDownList
         ItemIndex = 0
-        TabOrder = 7
+        TabOrder = 6
         Text = 'Broadcast'
         Items.Strings = (
           'Broadcast'
@@ -250,7 +239,7 @@ object OptDialog: TOptDialog
         Top = 184
         Width = 179
         Height = 21
-        TabOrder = 8
+        TabOrder = 7
       end
       object NavSys2: TCheckBox
         Left = 68
@@ -258,7 +247,7 @@ object OptDialog: TOptDialog
         Width = 71
         Height = 17
         Caption = 'GLO'
-        TabOrder = 10
+        TabOrder = 9
         OnClick = NavSys2Click
       end
       object NavSys3: TCheckBox
@@ -267,7 +256,7 @@ object OptDialog: TOptDialog
         Width = 61
         Height = 17
         Caption = 'Galileo'
-        TabOrder = 11
+        TabOrder = 10
       end
       object NavSys4: TCheckBox
         Left = 168
@@ -275,7 +264,7 @@ object OptDialog: TOptDialog
         Width = 61
         Height = 17
         Caption = 'QZSS'
-        TabOrder = 12
+        TabOrder = 11
       end
       object NavSys5: TCheckBox
         Left = 218
@@ -283,7 +272,7 @@ object OptDialog: TOptDialog
         Width = 51
         Height = 17
         Caption = 'SBAS'
-        TabOrder = 13
+        TabOrder = 12
       end
       object TideCorr: TComboBox
         Left = 325
@@ -292,7 +281,7 @@ object OptDialog: TOptDialog
         Height = 21
         Style = csDropDownList
         ItemIndex = 0
-        TabOrder = 4
+        TabOrder = 3
         Text = 'OFF'
         Items.Strings = (
           'OFF'
@@ -304,7 +293,7 @@ object OptDialog: TOptDialog
         Width = 69
         Height = 19
         Caption = 'BeiDou'
-        TabOrder = 14
+        TabOrder = 13
         OnClick = NavSys6Click
       end
       object ElMask: TComboBox
@@ -314,7 +303,7 @@ object OptDialog: TOptDialog
         Height = 21
         AutoComplete = False
         DropDownCount = 16
-        TabOrder = 15
+        TabOrder = 14
         Text = '15'
         Items.Strings = (
           '0'
@@ -339,7 +328,7 @@ object OptDialog: TOptDialog
         Width = 61
         Height = 17
         Caption = 'Sat PCV'
-        TabOrder = 16
+        TabOrder = 15
       end
       object PosOpt2: TCheckBox
         Left = 82
@@ -347,7 +336,7 @@ object OptDialog: TOptDialog
         Width = 62
         Height = 17
         Caption = 'Rec PCV'
-        TabOrder = 17
+        TabOrder = 16
       end
       object PosOpt3: TCheckBox
         Left = 142
@@ -355,7 +344,7 @@ object OptDialog: TOptDialog
         Width = 69
         Height = 17
         Caption = 'PhWU'
-        TabOrder = 18
+        TabOrder = 17
       end
       object PosOpt4: TCheckBox
         Left = 191
@@ -363,7 +352,7 @@ object OptDialog: TOptDialog
         Width = 68
         Height = 17
         Caption = 'Rej Ecl'
-        TabOrder = 19
+        TabOrder = 18
       end
       object PosOpt5: TCheckBox
         Left = 244
@@ -371,7 +360,7 @@ object OptDialog: TOptDialog
         Width = 68
         Height = 17
         Caption = 'RAIM FDE'
-        TabOrder = 20
+        TabOrder = 19
       end
       object BtnSnrMask: TButton
         Left = 324
@@ -379,7 +368,7 @@ object OptDialog: TOptDialog
         Width = 77
         Height = 23
         Caption = '...'
-        TabOrder = 22
+        TabOrder = 21
         OnClick = BtnSnrMaskClick
       end
       object PosOpt6: TCheckBox
@@ -388,7 +377,7 @@ object OptDialog: TOptDialog
         Width = 68
         Height = 17
         Caption = 'DBCorr'
-        TabOrder = 21
+        TabOrder = 20
       end
       object NavSys7: TCheckBox
         Left = 322
@@ -396,13 +385,17 @@ object OptDialog: TOptDialog
         Width = 69
         Height = 19
         Caption = 'IRNSS'
-        TabOrder = 23
+        TabOrder = 22
         OnClick = NavSys6Click
       end
     end
     object TabSheet2: TTabSheet
       Caption = 'Setting&2'
       ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Label25: TLabel
         Left = 24
         Top = 7
@@ -758,6 +751,10 @@ object OptDialog: TOptDialog
     object TabSheet3: TTabSheet
       Caption = 'O&utput'
       ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object LabelSolFormat: TLabel
         Left = 24
         Top = 7
@@ -1044,6 +1041,10 @@ object OptDialog: TOptDialog
     object TabSheet4: TTabSheet
       Caption = 'S&tatistics'
       ImageIndex = 3
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Label29: TLabel
         Left = 34
         Top = 213
@@ -1223,6 +1224,10 @@ object OptDialog: TOptDialog
     object TabSheet5: TTabSheet
       Caption = '&Positions'
       ImageIndex = 4
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Label4: TLabel
         Left = 12
         Top = 12
@@ -1539,6 +1544,10 @@ object OptDialog: TOptDialog
     object TabSheet7: TTabSheet
       Caption = '&Files'
       ImageIndex = 6
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Label1: TLabel
         Left = 6
         Top = 93
@@ -1877,6 +1886,10 @@ object OptDialog: TOptDialog
     object TabSheet8: TTabSheet
       Caption = '&Misc'
       ImageIndex = 6
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Label19: TLabel
         Left = 32
         Top = 7
diff --git a/app/rtknavi/naviopt.h b/app/rtknavi/naviopt.h
index 55d5df94f499dda78e49f0aad80ddf15eda0077a..14e4b7b59a237fad4ecb73518d990522cae70039 100644
--- a/app/rtknavi/naviopt.h
+++ b/app/rtknavi/naviopt.h
@@ -36,7 +36,6 @@ __published:
 	TComboBox *TropOpt;
 	TComboBox *PosMode;
 	TComboBox *Freq;
-	TComboBox *Solution;
 	TComboBox *SatEphem;
 	TEdit *ExSatsE;
 	TTabSheet *TabSheet2;
diff --git a/app/rtknavi/rtknavi.cbproj b/app/rtknavi/rtknavi.cbproj
index c4c7b3f5a59be7a7fb1cf50f943f85ed05193f81..f4fff16f6f846f4e44b6941bec21cb18c1eb9490 100644
--- a/app/rtknavi/rtknavi.cbproj
+++ b/app/rtknavi/rtknavi.cbproj
@@ -65,10 +65,10 @@
         <TASM_IncludePath>..\..\..\rtklib_extlex;..\..\extlex;..\..\src\rcv;..\appcmn;..\..\src;$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;$(TASM_IncludePath)</TASM_IncludePath>
         <DCC_ObjPath>..\..\..\rtklib_extlex;..\..\extlex;..\..\qzslex;..\..\src\rcv;..\..\src;..\appcmn;G:\rtklib_2.2\app\rtknavi;$(DCC_ObjPath)</DCC_ObjPath>
         <PackageImports>vclx.bpi;vcl.bpi;$(PackageImports)</PackageImports>
-        <TASM_Defines>_RTLDLL;NO_STRICT;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BRCC_Defines>_RTLDLL;NO_STRICT;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;NO_STRICT;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;NO_STRICT;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
         <ILINK_AppType>Windows</ILINK_AppType>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENAIRN;ENACMP;NFREQ=3;NEXOBS=3;ENALEX;$(BCC_Defines)</BCC_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENAIRN;ENACMP;NFREQ=4;NEXOBS=3;ENALEX;$(BCC_Defines)</BCC_Defines>
         <BRCC_IncludePath>..\..\..\rtklib_extlex;..\..\extlex;..\..\src\rcv;..\appcmn;..\..\src;$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;$(BRCC_IncludePath)</BRCC_IncludePath>
         <BCC_PCHWithExternalTypeFiles>false</BCC_PCHWithExternalTypeFiles>
         <BCC_UserSuppliedOptions> -tWM</BCC_UserSuppliedOptions>
@@ -470,10 +470,7 @@
                     <Parameters Name="LoadAllSymbols">True</Parameters>
                     <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
                 </Parameters>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k240.bpl">Embarcadero C++Builder Office 2000 サーバー パッケージ</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp240.bpl">Embarcadero C++Builder Office XP サーバー パッケージ</Excluded_Packages>
-                </Excluded_Packages>
+                <Excluded_Packages/>
                 <ProjectProperties>
                     <ProjectProperties Name="AutoShowDeps">False</ProjectProperties>
                     <ProjectProperties Name="ManagePaths">True</ProjectProperties>
diff --git a/app/rtknavi_win64/rtknavi_win64.cbproj b/app/rtknavi_win64/rtknavi_win64.cbproj
index c68e1e94b585a2611cab612fc4a169aa0cb0cbf9..5be69b800917b02a28d6abb8eb57cd8ea219939f 100644
--- a/app/rtknavi_win64/rtknavi_win64.cbproj
+++ b/app/rtknavi_win64/rtknavi_win64.cbproj
@@ -59,7 +59,7 @@
         <Base>true</Base>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base)'!=''">
-        <BCC_Defines>WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NFREQ=3;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
+        <BCC_Defines>WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
         <ILINK_LinkwithRegEx>false</ILINK_LinkwithRegEx>
         <ILINK_LinkwithMidas>false</ILINK_LinkwithMidas>
         <ILINK_LinkwithZLib>false</ILINK_LinkwithZLib>
@@ -99,8 +99,8 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <OutputExt>exe</OutputExt>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
         <BCC_UserSuppliedOptions> -tWM</BCC_UserSuppliedOptions>
         <ILINK_LibraryPath>..\..\lib\omf\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
@@ -116,8 +116,8 @@
         <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
         <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
diff --git a/app/rtkplot/rtkplot.cbproj b/app/rtkplot/rtkplot.cbproj
index 9cb171c936c77f4c3bac8a2dd339f4a685a6e92a..20c77da77c83a190f73f5c75ff13046e73c6ee10 100644
--- a/app/rtkplot/rtkplot.cbproj
+++ b/app/rtkplot/rtkplot.cbproj
@@ -6,7 +6,7 @@
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Release</Config>
         <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>18.2</ProjectVersion>
+        <ProjectVersion>18.4</ProjectVersion>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
         <TargetedPlatforms>1</TargetedPlatforms>
         <AppType>Application</AppType>
@@ -82,9 +82,9 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <OutputExt>exe</OutputExt>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NEXOBS=3;NFREQ=3;$(BCC_Defines)</BCC_Defines>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NEXOBS=0;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
         <BCC_UserSuppliedOptions> -tWM</BCC_UserSuppliedOptions>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <IncludePath>$(BDSINCLUDE)\windows\vcl;$(IncludePath)</IncludePath>
@@ -513,8 +513,8 @@
                     <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
                 </Parameters>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k250.bpl">Embarcadero C++Builder Office 2000 サーバー パッケージ</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp250.bpl">Embarcadero C++Builder Office XP サーバー パッケージ</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k250.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp250.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                 </Excluded_Packages>
                 <ProjectProperties>
                     <ProjectProperties Name="AutoShowDeps">False</ProjectProperties>
@@ -554,9 +554,8 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\ephemeris.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32250mt.dll" Class="DependencyModule">
                     <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
@@ -566,8 +565,9 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32250mt.dll" Class="DependencyModule">
+                <DeployFile LocalName="..\..\src\rcv\novatel.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
+                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
@@ -577,7 +577,7 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\novatel.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\ephemeris.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -649,6 +649,12 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
+                <DeployFile LocalName="..\..\src\rcv\swiftnav.c" Configuration="Release" Class="ProjectFile">
+                    <Platform Name="Win32">
+                        <RemoteDir>.\</RemoteDir>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
                 <DeployFile LocalName="..\..\src\tle.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
@@ -733,12 +739,6 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\swiftnav.c" Configuration="Release" Class="ProjectFile">
-                    <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
                 <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64250mt.dll" Class="DependencyModule">
                     <Platform Name="Win64">
                         <Overwrite>true</Overwrite>
diff --git a/app/rtkpost/rtkpost.cbproj b/app/rtkpost/rtkpost.cbproj
index ec524ddad20c787628cbf0f734af3eb4a1cf6331..13c79de873e145f206f0b1bec798c4b8eb795475 100644
--- a/app/rtkpost/rtkpost.cbproj
+++ b/app/rtkpost/rtkpost.cbproj
@@ -97,9 +97,9 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <OutputExt>exe</OutputExt>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;ENAIRN;NFREQ=3;$(BCC_Defines)</BCC_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;ENAIRN;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
         <BCC_UserSuppliedOptions> -tWM -AT -xp</BCC_UserSuppliedOptions>
         <ILINK_LibraryPath>D:\proj\rtklib\lib\iers\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
@@ -111,9 +111,9 @@
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=3;$(BCC_Defines)</BCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
         <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
diff --git a/app/rtkpost_win64/rtkpost_win64.cbproj b/app/rtkpost_win64/rtkpost_win64.cbproj
index 84e21da9ee7d72fabcd0fa024d108ba65c34387c..96222a085d6a7565535413edae7a9e4edb10f184 100644
--- a/app/rtkpost_win64/rtkpost_win64.cbproj
+++ b/app/rtkpost_win64/rtkpost_win64.cbproj
@@ -59,7 +59,7 @@
         <Base>true</Base>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base)'!=''">
-        <BCC_Defines>WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NFREQ=3;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
+        <BCC_Defines>WIN32;TRACE;ENAGLO;ENAGAL;ENAQZS;ENACMP;ENAIRN;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
         <ILINK_LinkwithRegEx>false</ILINK_LinkwithRegEx>
         <ILINK_LinkwithMidas>false</ILINK_LinkwithMidas>
         <ILINK_LinkwithZLib>false</ILINK_LinkwithZLib>
@@ -96,8 +96,8 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <OutputExt>exe</OutputExt>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
         <BCC_UserSuppliedOptions> -tWM -AT -xp</BCC_UserSuppliedOptions>
         <ILINK_LibraryPath>..\..\lib\omf;$(ILINK_LibraryPath)</ILINK_LibraryPath>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
@@ -113,8 +113,8 @@
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
         <VerInfo_Locale>1033</VerInfo_Locale>
-        <TASM_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(TASM_Defines)</TASM_Defines>
-        <BRCC_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;NFREQ=3;$(BRCC_Defines)</BRCC_Defines>
+        <TASM_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(TASM_Defines)</TASM_Defines>
+        <BRCC_Defines>_RTLDLL;WIN32;TRACE;MKL;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(BRCC_Defines)</BRCC_Defines>
         <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
diff --git a/app/rtkrcv/gcc/makefile b/app/rtkrcv/gcc/makefile
index 6776c7d5a62fe956716387c1e5d6139c48ce4595..b99e0165c4aabae870822c2ad4f3f8286e0e7eb9 100644
--- a/app/rtkrcv/gcc/makefile
+++ b/app/rtkrcv/gcc/makefile
@@ -5,7 +5,7 @@ SRC    = ../../../src
 
 # for beagleboard
 #CTARGET= -mfpu=neon -mfloat-abi=softfp -ffast-math
-CTARGET= -DENAGLO -DENAQZS -DENACMP -DENAGAL -DENAIRN -DNFREQ=3 -DSVR_REUSEADDR
+CTARGET= -DENAGLO -DENAQZS -DENACMP -DENAGAL -DENAIRN -DNFREQ=4 -DNEXOBS=3 -DSVR_REUSEADDR
 
 CFLAGS = -Wall -O3 -ansi -pedantic -Wno-unused-but-set-variable -I$(SRC) -I.. -DTRACE $(CTARGET) -g
 
diff --git a/app/str2str/gcc/makefile b/app/str2str/gcc/makefile
index 62308ad11a32804ef1293fcbdc66c39bc48a815d..90a9d902e8f05792274d01f3f7fe1870da27689b 100644
--- a/app/str2str/gcc/makefile
+++ b/app/str2str/gcc/makefile
@@ -7,8 +7,8 @@ SRC    = ../../../src
 #CTARGET= -mfpu=neon -mfloat-abi=softfp -ffast-math
 CTARGET=
 
-#OPTION = -DENAGLO -DENAGAL -DENAQZS -DENACMP -DENAIRN -DTRACE -DNFREQ=3 -DNEXOBS=3
-OPTION = -DENAGLO -DENAGAL -DENAQZS -DENACMP -DENAIRN -DTRACE -DNFREQ=3 -DNEXOBS=3 -DSVR_REUSEADDR
+#OPTION = -DENAGLO -DENAGAL -DENAQZS -DENACMP -DENAIRN -DTRACE -DNFREQ=4 -DNEXOBS=3
+OPTION = -DENAGLO -DENAGAL -DENAQZS -DENACMP -DENAIRN -DTRACE -DNFREQ=4 -DNEXOBS=3 -DSVR_REUSEADDR
 CFLAGS = -Wall -O3 -ansi -pedantic -Wno-unused-but-set-variable -I$(SRC) $(OPTION) $(CTARGET) -g
 
 UNAME_S := $(shell uname -s)
diff --git a/app/strsvr/strsvr.cbproj b/app/strsvr/strsvr.cbproj
index 7635596b36c2d69c20462d9a4714e8b595545508..fa4fe06abfa208d063687d074e103be906aad95d 100644
--- a/app/strsvr/strsvr.cbproj
+++ b/app/strsvr/strsvr.cbproj
@@ -6,7 +6,7 @@
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Release</Config>
         <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>18.2</ProjectVersion>
+        <ProjectVersion>18.4</ProjectVersion>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
         <TargetedPlatforms>1</TargetedPlatforms>
         <AppType>Application</AppType>
@@ -102,7 +102,7 @@
         <BRCC_Defines>_RTLDLL;WIN32;TRACE;$(BRCC_Defines)</BRCC_Defines>
         <TASM_Defines>_RTLDLL;WIN32;TRACE;$(TASM_Defines)</TASM_Defines>
         <BCC_UserSuppliedOptions> -tWM</BCC_UserSuppliedOptions>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=3;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
         <Debugger_RunParams>-x 2</Debugger_RunParams>
         <IncludePath>$(BDSINCLUDE)\windows\vcl;$(IncludePath)</IncludePath>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
@@ -115,7 +115,7 @@
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <TASM_Defines>_RTLDLL;WIN32;TRACE;$(TASM_Defines)</TASM_Defines>
         <BRCC_Defines>_RTLDLL;WIN32;TRACE;$(BRCC_Defines)</BRCC_Defines>
-        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=3;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
+        <BCC_Defines>_RTLDLL;WIN32;TRACE;ENAGLO;ENAQZS;ENAGAL;ENACMP;NFREQ=4;NEXOBS=3;$(BCC_Defines)</BCC_Defines>
         <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
         <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
     </PropertyGroup>
@@ -277,6 +277,9 @@
         <CppCompile Include="..\..\src\rcv\cmr.c">
             <BuildOrder>38</BuildOrder>
         </CppCompile>
+        <CppCompile Include="..\..\src\rcv\comnav.c">
+            <BuildOrder>42</BuildOrder>
+        </CppCompile>
         <CppCompile Include="..\..\src\rcv\crescent.c">
             <BuildOrder>27</BuildOrder>
         </CppCompile>
@@ -307,9 +310,6 @@
         <CppCompile Include="..\..\src\rcv\tersus.c">
             <BuildOrder>41</BuildOrder>
         </CppCompile>
-        <CppCompile Include="..\..\src\rcv\comnav.c">
-            <BuildOrder>42</BuildOrder>
-        </CppCompile>
         <CppCompile Include="..\..\src\rcv\ublox.c">
             <BuildOrder>35</BuildOrder>
         </CppCompile>
@@ -345,21 +345,21 @@
             <BuildOrder>26</BuildOrder>
             <BuildOrder>12</BuildOrder>
         </CppCompile>
-        <FormResources Include="..\appcmn\refdlg.dfm"/>
         <FormResources Include="..\appcmn\keydlg.dfm"/>
+        <FormResources Include="..\appcmn\refdlg.dfm"/>
         <FormResources Include="..\appcmn\serioptdlg.dfm"/>
-        <FormResources Include="..\appcmn\viewer.dfm"/>
         <FormResources Include="..\appcmn\tcpoptdlg.dfm"/>
-        <FormResources Include="..\appcmn\cmdoptdlg.dfm"/>
+        <FormResources Include="..\appcmn\viewer.dfm"/>
         <FormResources Include="..\appcmn\aboutdlg.dfm"/>
+        <FormResources Include="..\appcmn\cmdoptdlg.dfm"/>
         <FormResources Include="..\appcmn\confdlg.dfm"/>
-        <FormResources Include="..\appcmn\ftpoptdlg.dfm"/>
         <FormResources Include="..\appcmn\fileoptdlg.dfm"/>
+        <FormResources Include="..\appcmn\ftpoptdlg.dfm"/>
+        <FormResources Include="..\appcmn\vieweropt.dfm"/>
         <FormResources Include="svroptdlg.dfm"/>
-        <FormResources Include="svrmain.dfm"/>
         <FormResources Include="convdlg.dfm"/>
-        <FormResources Include="..\appcmn\vieweropt.dfm"/>
         <FormResources Include="mondlg.dfm"/>
+        <FormResources Include="svrmain.dfm"/>
         <BuildConfiguration Include="Release">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -461,15 +461,15 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="Release_Build\strsvr.exe" Configuration="Release" Class="ProjectOutput">
+                <DeployFile LocalName="..\..\src\rcv\ublox.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
-                        <RemoteName>strsvr.exe</RemoteName>
+                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\ublox.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile LocalName="Release_Build\strsvr.exe" Configuration="Release" Class="ProjectOutput">
                     <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
+                        <RemoteName>strsvr.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
@@ -479,18 +479,18 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32240mt.dll" Class="DependencyModule">
+                <DeployFile LocalName="..\..\src\rtcm3e.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
+                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rtcm2.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32240mt.dll" Class="DependencyModule">
                     <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rtcm3e.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile LocalName="..\..\src\rtcm2.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
@@ -518,6 +518,12 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
+                <DeployFile LocalName="..\..\src\rcv\swiftnav.c" Configuration="Release" Class="ProjectFile">
+                    <Platform Name="Win32">
+                        <RemoteDir>.\</RemoteDir>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
                 <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64240mt.dll" Class="DependencyModule">
                     <Platform Name="Win64">
                         <Overwrite>true</Overwrite>
@@ -570,12 +576,6 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-              <DeployFile LocalName="..\..\src\rcv\comnav.c" Configuration="Release" Class="ProjectFile">
-                    <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
                 <DeployFile LocalName="..\..\src\rcv\skytraq.c" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
@@ -631,15 +631,14 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\src\rcv\swiftnav.c" Configuration="Release" Class="ProjectFile">
+                <DeployFile LocalName="strsvr.res" Configuration="Release" Class="ProjectFile">
                     <Platform Name="Win32">
                         <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="strsvr.res" Configuration="Release" Class="ProjectFile">
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32c250.dll" Class="DependencyModule">
                     <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
@@ -655,13 +654,14 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32c250.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64250mt.dll" Class="DependencyModule">
+                    <Platform Name="Win64">
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64250mt.dll" Class="DependencyModule">
-                    <Platform Name="Win64">
+                <DeployFile LocalName="..\..\src\rcv\comnav.c" Configuration="Release" Class="ProjectFile">
+                    <Platform Name="Win32">
+                        <RemoteDir>.\</RemoteDir>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
diff --git a/src/convrnx.c b/src/convrnx.c
index 41144f6ad501fa1b6cf6a6752bc902a0f1eee8ac..d017eded6056fbf0c7237409952369914ee9b92e 100644
--- a/src/convrnx.c
+++ b/src/convrnx.c
@@ -687,14 +687,20 @@ static void set_obstype(int format, rnxopt_t *opt)
         {0},
         {0}
     };
-    static const unsigned char codes_rtcm3[NSATSYS][8]={ /* rtcm3 */
-        {CODE_L1C,CODE_L1W,CODE_L2W,CODE_L2X,CODE_L5X},
-        {CODE_L1C,CODE_L1P,CODE_L2C,CODE_L2P},
-        {CODE_L1X,CODE_L5X,CODE_L7X,CODE_L8X},
-        {CODE_L1C,CODE_L2X,CODE_L5X},
-        {CODE_L1C,CODE_L5X},
-        {CODE_L1I,CODE_L7I},
-        {0}
+    static const unsigned char codes_rtcm3[NSATSYS][32]={ /* rtcm 3.2 */
+        {CODE_L1C,CODE_L1P,CODE_L1W,CODE_L1Y,CODE_L1M,CODE_L1N,CODE_L1S,CODE_L1L,
+         CODE_L2C,CODE_L2D,CODE_L2S,CODE_L2L,CODE_L2X,CODE_L2P,CODE_L2W,CODE_L2Y,
+         CODE_L2M,CODE_L2N,CODE_L5I,CODE_L5Q,CODE_L5X},
+        {CODE_L1C,CODE_L1P,CODE_L2C,CODE_L2P,CODE_L3I,CODE_L3Q,CODE_L3X},
+        {CODE_L1C,CODE_L1A,CODE_L1B,CODE_L1X,CODE_L1Z,CODE_L5I,CODE_L5Q,CODE_L5X,
+         CODE_L6A,CODE_L6B,CODE_L6C,CODE_L6X,CODE_L6Z,CODE_L7I,CODE_L7Q,CODE_L7X,
+         CODE_L8I,CODE_L8Q,CODE_L8X},
+        {CODE_L1C,CODE_L1S,CODE_L1L,CODE_L1X,CODE_L1Z,CODE_L2S,CODE_L2L,CODE_L2X,
+         CODE_L5I,CODE_L5Q,CODE_L5X,CODE_L6S,CODE_L6L,CODE_L6X},
+        {CODE_L1C,CODE_L5I,CODE_L5Q,CODE_L5X},
+        {CODE_L1I,CODE_L1Q,CODE_L1X,CODE_L7I,CODE_L7Q,CODE_L7X,CODE_L6I,CODE_L6Q,
+         CODE_L6X},
+        {CODE_L5A,CODE_L5B,CODE_L5C,CODE_L5X,CODE_L9A,CODE_L9B,CODE_L9C,CODE_L9X}
     };
     static const unsigned char codes_cnav[NSATSYS][8]={ /* comnav */
         {CODE_L1C,CODE_L1P,CODE_L2D,CODE_L2X,CODE_L5I},
@@ -777,19 +783,19 @@ static void set_obstype(int format, rnxopt_t *opt)
     static const unsigned char codes_sbp[NSATSYS][8]={ /* Swift */
         {CODE_L1C,CODE_L2S},
         {CODE_L1C,CODE_L2C},
+        {CODE_L1B,CODE_L7I},
         {CODE_L1C},
         {CODE_L1C},
-        {CODE_L1C},
-        {CODE_L1I},
+        {CODE_L1I,CODE_L7I},
         {0}
     };
-    static const unsigned char codes_other[7][8]={ /* others */
-        {CODE_L1C},
-        {CODE_L1C},
-        {CODE_L1X},
+    static const unsigned char codes_other[NSATSYS][8]={ /* others inc u-blox */
+        {CODE_L1C,CODE_L2L},
+        {CODE_L1C,CODE_L2C},
+        {CODE_L1C,CODE_L1X,CODE_L7Q},
         {CODE_L1C},
         {CODE_L1C},
-        {CODE_L1I},
+        {CODE_L1I,CODE_L7I},
         {0}
     };
     const unsigned char *codes;
diff --git a/src/ionex.c b/src/ionex.c
index afec8a96b01b89f116d8024002d1f9f1de9424f1..55045a06d86b4abe3391d377015e1326c51671f6 100644
--- a/src/ionex.c
+++ b/src/ionex.c
@@ -374,7 +374,7 @@ static int interptec(const tec_t *tec, int k, const double *posp, double *value,
 static int iondelay(gtime_t time, const tec_t *tec, const double *pos,
                     const double *azel, int opt, double *delay, double *var)
 {
-    const double fact=40.30E16/FREQ1/FREQ1; /* tecu->L1 iono (m) */
+    const double fact=40.30E16/FREQL1/FREQL1; /* tecu->L1 iono (m) */
     double fs,posp[3]={0},vtec,rms,hion,rp;
     int i;
     
diff --git a/src/lambda.c b/src/lambda.c
index 6b847f2ee76d29996a56f29c964d65d517bcd372..e071ddaed5fe9e9a190c5934c6b35368c7042fa3 100644
--- a/src/lambda.c
+++ b/src/lambda.c
@@ -161,7 +161,7 @@ static int search(int n, int m, const double *L, const double *D,
     
     if (c>=LOOPMAX) {
         fprintf(stderr,"%s : search loop count overflow\n",__FILE__);
-        return -1;
+        return -2;
     }
     return 0;
 }
diff --git a/src/options.c b/src/options.c
index c80af92440d00cb00068a514392334d254579596..5241fd941abfdd79d8609cf580e5c0cae5672889 100644
--- a/src/options.c
+++ b/src/options.c
@@ -40,7 +40,7 @@ static char snrmask_[NFREQ][1024];
 /* system options table ------------------------------------------------------*/
 #define SWTOPT  "0:off,1:on"
 #define MODOPT  "0:single,1:dgps,2:kinematic,3:static,4:static-start,5:movingbase,6:fixed,7:ppp-kine,8:ppp-static,9:ppp-fixed"
-#define FRQOPT  "1:l1,2:l1+l2,3:l1+l2+l5,4:l1+l5"
+#define FRQOPT  "1:l1,2:l1+l2,3:l1+l2+e5b,4:l1+l2+e5b+l5"
 #define TYPOPT  "0:forward,1:backward,2:combined"
 #define IONOPT  "0:off,1:brdc,2:sbas,3:dual-freq,4:est-stec,5:ionex-tec,6:qzs-brdc,7:qzs-lex,8:stec"
 #define TRPOPT  "0:off,1:saas,2:sbas,3:est-ztd,4:est-ztdgrad,5:ztd"
@@ -431,10 +431,10 @@ static void buff2sysopts(void)
         }
     }
     /* number of frequency (4:L1+L5) */
-    if (prcopt_.nf==4) {
+    /*if (prcopt_.nf==4) {
         prcopt_.nf=3;
         prcopt_.freqopt=1;
-    }
+    }*/
 }
 /* options to system options buffer ------------------------------------------*/
 static void sysopts2buff(void)
@@ -478,10 +478,10 @@ static void sysopts2buff(void)
         }
     }
     /* number of frequency (4:L1+L5) */
-    if (prcopt_.nf==3&&prcopt_.freqopt==1) {
+    /*if (prcopt_.nf==3&&prcopt_.freqopt==1) {
         prcopt_.nf=4;
         prcopt_.freqopt=0;
-    }
+    }*/
 }
 /* reset system options to default ---------------------------------------------
 * reset system options to default
diff --git a/src/rcv/cmr.c b/src/rcv/cmr.c
index 67eb0ef919ca2ad758934e85c1e36760d0113b1d..4d51c89eaeff0a28e55c1422a8fa0f6217187567 100644
--- a/src/rcv/cmr.c
+++ b/src/rcv/cmr.c
@@ -346,8 +346,8 @@
 #define M_MFLAG_NOL2MSG2        M_BIT7
 
 /* Conversion factors: */
-#define L1_WAVELENGTH           (CLIGHT/FREQ1)  /* GPS L1 wavelength (meters) */
-#define L2_WAVELENGTH           (CLIGHT/FREQ2)  /* GPS L2 wavelength (meters) */
+#define L1_WAVELENGTH           (CLIGHT/FREQL1)  /* GPS L1 wavelength (meters) */
+#define L2_WAVELENGTH           (CLIGHT/FREQL2)  /* GPS L2 wavelength (meters) */
 #define RANGE_MS                (CLIGHT*0.001)  /* Meters per millisecond at light speed */
 
 /*
diff --git a/src/rcv/nvs.c b/src/rcv/nvs.c
index 8547d910acad649f07bfa66ce183267eb414a2ff..3e1a249bbd3aacc948c960cf4099a10a7246bd77 100644
--- a/src/rcv/nvs.c
+++ b/src/rcv/nvs.c
@@ -134,7 +134,7 @@ static int decode_xf5raw(raw_t *raw)
         if (sys==SYS_GLO) {
             raw->obs.data[n].L[0]  =  L1 - toff*(FREQ1_GLO+DFRQ1_GLO*carrNo);
         } else {
-            raw->obs.data[n].L[0]  =  L1 - toff*FREQ1;
+            raw->obs.data[n].L[0]  =  L1 - toff*FREQL1;
         }
         raw->obs.data[n].P[0]    = (P1-dTowFrac)*CLIGHT*0.001 - toff*CLIGHT; /* in ms, needs to be converted */
         raw->obs.data[n].D[0]    =  (float)D1;
diff --git a/src/rcv/rt17.c b/src/rcv/rt17.c
index 50ebe0b6093a4f6f01f9995e45a43fdfcabf8972..761195d649b7445124b5a11aeffc9885cc4565cc 100644
--- a/src/rcv/rt17.c
+++ b/src/rcv/rt17.c
@@ -1853,10 +1853,10 @@ static int DecodeType17(raw_t *Raw, unsigned int rif)
         /* Apply clock offset to observables */
         if (ClockOffset != 0.0)
         {
-            obs->P[0] += ClockOffset * (CLIGHT/FREQ1);
-            obs->P[1] += ClockOffset * (CLIGHT/FREQ2);
-            obs->L[0] += ClockOffset * FREQ1;
-            obs->L[1] += ClockOffset * FREQ2;
+            obs->P[0] += ClockOffset * (CLIGHT/FREQL1);
+            obs->P[1] += ClockOffset * (CLIGHT/FREQL2);
+            obs->L[0] += ClockOffset * FREQL1;
+            obs->L[1] += ClockOffset * FREQL2;
         }
 #endif
          n++;
diff --git a/src/rcv/septentrio.c b/src/rcv/septentrio.c
index c67a83f568e772d10a67d5856f636e5ad1004b9f..655ed06f874a07ce09be3aaffb0285708d03991c 100644
--- a/src/rcv/septentrio.c
+++ b/src/rcv/septentrio.c
@@ -389,12 +389,12 @@ static int decode_measepoch(raw_t *raw){
         h=getFreqNo(signType1);
 #else
         freqType1 = getSigFreq(signType1,8);
-        if      (freqType1 == FREQ1) h = 0;
-        else if (freqType1 == FREQ2) h = 1;
-        else if (freqType1 == FREQ5) h = 2;
-        else if (freqType1 == FREQ6) h = 3;
-        else if (freqType1 == FREQ7) h = 4;
-        else if (freqType1 == FREQ8) h = 5;
+        if      (freqType1 == FREQL1) h = 0;
+        else if (freqType1 == FREQL2) h = 1;
+        else if (freqType1 == FREQE5b) h = 2;
+        else if (freqType1 == FREQL5) h = 3;
+        else if (freqType1 == FREQE6) h = 4;
+        else if (freqType1 == FREQE5ab) h = 5;
         else                         h = 0;
 #endif
         /* store signal info */
@@ -469,12 +469,12 @@ static int decode_measepoch(raw_t *raw){
             h=getFreqNo(signType2);
 #else
             freqType2 = getSigFreq(signType2,8);
-            if      (freqType2 == FREQ1) h = 0;
-            else if (freqType2 == FREQ2) h = 1;
-            else if (freqType2 == FREQ5) h = 2;
-            else if (freqType2 == FREQ6) h = 3;
-            else if (freqType2 == FREQ7) h = 4;
-            else if (freqType2 == FREQ8) h = 5;
+            if      (freqType2 == FREQL1) h = 0;
+            else if (freqType2 == FREQL2) h = 1;
+            else if (freqType2 == FREQE5b)h = 2;
+            else if (freqType2 == FREQL5) h = 3;
+            else if (freqType2 == FREQE6) h = 4;
+            else if (freqType2 == FREQE5ab) h = 5;
             else                         h = 0;
 #endif
             pri=getcodepri(sys,getSignalCode(signType2),raw->opt); /* get signal priority */
@@ -514,19 +514,19 @@ static double getSigFreq(int _signType, int freqNo){
     switch (_signType)
     {
     case 0:                                                        /* GPSL1CA */
-        return FREQ1;
+        return FREQL1;
     case 1:                                                        /* GPSL1PY */
-        return FREQ1;
+        return FREQL1;
     case 2:                                                        /* GPSL2PY */
-        return FREQ2;
+        return FREQL2;
     case 3:                                                        /* GPSL2C  */
-        return FREQ2;
+        return FREQL2;
     case 4:                                                        /* GPSL5   */
-        return FREQ5;
+        return FREQL5;
     case 6:                                                        /* QZSL1C  */
-        return FREQ1;
+        return FREQL1;
     case 7:                                                        /* QZSL2C  */
-        return FREQ2;
+        return FREQL2;
     case 8:                                                        /* GLOL1CA */
         return FREQ1_GLO+(freqNo*9./16.)*1e6;
     case 9:                                                        /* GLOL1P  */
@@ -538,27 +538,27 @@ static double getSigFreq(int _signType, int freqNo){
     case 12:                                                       /* GLOL3X  */
         return 1.202025*1e9;
     case 15:                                                       /* IRNSSL5  */
-        return FREQ5;
+        return FREQL5;
     case 16:                                                       /* GALL1A  */
-        return FREQ1;
+        return FREQL1;
     case 17:                                                       /* GALL1BC */
-        return FREQ1;
+        return FREQL1;
     case 18:                                                       /* GALE6A  */
-        return FREQ6;
+        return FREQE6;
     case 19:                                                       /* GALE6BC */
-        return FREQ6;
+        return FREQE6;
     case 20:                                                       /* GALE5a  */
-        return FREQ5;
+        return FREQL5;
     case 21:                                                       /* GALE5b  */
-        return FREQ7;
+        return FREQE5b;
     case 22:                                                       /* GALE5   */
-        return FREQ8;
+        return FREQE5ab;
     case 24:                                                       /* GEOL1   */
-        return FREQ1;
+        return FREQL1;
     case 25:                                                       /* GEOL5   */
-        return FREQ5;
+        return FREQL5;
     case 26:                                                       /* QZSL5   */
-        return FREQ5;
+        return FREQL5;
     case 28:                                                       /* CMPL1   */
         return FREQ1_CMP;
     case 29:                                                       /* CMPE5B  */
@@ -566,7 +566,7 @@ static double getSigFreq(int _signType, int freqNo){
     case 30:                                                       /* CMPB3   */
         return FREQ3_CMP;
     }
-    return FREQ1;
+    return FREQL1;
 }
 
 #if 0 /* UNUSED */
diff --git a/src/rcv/swiftnav.c b/src/rcv/swiftnav.c
index dc31095588ad60a0963b578047042cc4d8564056..6fe1989fde9a9c60d8abe3e2e8f2801467e88065 100644
--- a/src/rcv/swiftnav.c
+++ b/src/rcv/swiftnav.c
@@ -21,10 +21,13 @@ static const char rcsid[] = "$Id: Swiftnav SBP,v 1.0 2017/02/01 FT $";
 
 #define ID_MEASEPOCH 0x004A      /* observation */
 #define ID_MSGEPHGPS_DEP1 0x0081 /* GPS L1 C/A nav message (deprecated) */
-#define ID_MSGEPHGPS 0x0086      /* GPS L1 C/A nav message */
-#define ID_MSGEPHGLO 0x0088      /* Glonass L1/L2 OF nav message */
+#define ID_MSGEPHGPS_DEP2 0x0086 /* GPS L1 C/A nav message (deprecated) */
+#define ID_MSGEPHGPS 0x008A      /* GPS L1 C/A nav message */
 #define ID_MSGEPHBDS 0x0089      /* BDS B1/B2 D1 nav message */
 #define ID_MSGEPHGAL 0x0095      /* GAL E1 I/NAV message */
+#define ID_MSGEPHGLO_DEP1 0x0088 /* Glonass L1/L2 OF nav message (deprecated)  \
+                                    */
+#define ID_MSGEPHGLO 0x008B      /* Glonass L1/L2 OF nav message */
 #define ID_MSGIONGPS 0x0090      /* GPS ionospheric parameters */
 #define ID_MSG_SBAS_RAW 0x7777   /* SBAS data */
 
@@ -83,7 +86,7 @@ typedef enum code_e {
   CODE_GPS_L5I = 9,
   CODE_GPS_L5Q = 10,
   CODE_GPS_L5X = 11,  /* combined L5 tracking */
-  CODE_BDS2_B11 = 12, /* data channel at 1526 * 1.023 MHz */
+  CODE_BDS2_B1 = 12, /* data channel at 1526 * 1.023 MHz */
   CODE_BDS2_B2 = 13,  /* data channel at 1180 * 1.023 MHz */
   CODE_GAL_E1B = 14,  /* data channel at E1 (1540 * 1.023 MHz) */
   CODE_GAL_E1C = 15,  /* pilot channel at E1 */
@@ -108,6 +111,48 @@ typedef enum code_e {
   CODE_COUNT
 } code_t;
 
+typedef struct {
+  uint32_t code;
+  uint32_t sys;
+  uint32_t freq;
+} bandcode_t;
+
+static bandcode_t rtklib_bandcode_map[CODE_COUNT] =
+    {{CODE_L1C, SYS_GPS, 0},     /* [CODE_GPS_L1CA] */
+     {CODE_L2S, SYS_GPS, 1},     /* [CODE_GPS_L2CM] */
+     {CODE_L1C, SYS_SBS, 0},     /* [CODE_SBAS_L1CA]*/
+     {CODE_L1C, SYS_GLO, 0},     /* [CODE_GLO_L1OF] */
+     {CODE_L2C, SYS_GLO, 1},     /* [CODE_GLO_L2OF] */
+     {CODE_L1P, SYS_GPS, 0},     /* [CODE_GPS_L1P]  */
+     {CODE_L2P, SYS_GPS, 1},     /* [CODE_GPS_L2P]  */
+     {CODE_L2L, SYS_GPS, 1},     /* [CODE_GPS_L2CL] */
+     {CODE_L2X, SYS_GPS, 1},     /* [CODE_GPS_L2CX] */
+     {CODE_L5I, SYS_GPS, 3},     /* [CODE_GPS_L5I]  */
+     {CODE_L5Q, SYS_GPS, 3},     /* [CODE_GPS_L5Q]  */
+     {CODE_L5X, SYS_GPS, 3},     /* [CODE_GPS_L5X]  */
+     {CODE_L1I, SYS_CMP, 0},     /* [CODE_BDS2_B1]  */
+     {CODE_L7I, SYS_CMP, 1},     /* [CODE_BDS2_B2]  */
+     {CODE_L1B, SYS_GAL, 0},     /* [CODE_GAL_E1B]  */
+     {CODE_L1C, SYS_GAL, 0},     /* [CODE_GAL_E1C]  */
+     {CODE_L1X, SYS_GAL, 0},     /* [CODE_GAL_E1X]  */
+     {CODE_L6B, SYS_GAL, 4},     /* [CODE_GAL_E6B]  */
+     {CODE_L6C, SYS_GAL, 4},     /* [CODE_GAL_E6C]  */
+     {CODE_L6X, SYS_GAL, 4},     /* [CODE_GAL_E6X]  */
+     {CODE_L7I, SYS_GAL, 2},     /* [CODE_GAL_E7I]  */
+     {CODE_L7Q, SYS_GAL, 2},     /* [CODE_GAL_E7Q]  */
+     {CODE_L7X, SYS_GAL, 2},     /* [CODE_GAL_E7X]  */
+     {CODE_L8X, SYS_GAL, 3},     /* [CODE_GAL_E8]   */
+     {CODE_L5I, SYS_GAL, 3},     /* [CODE_GAL_E5I]  */
+     {CODE_L5Q, SYS_GAL, 3},     /* [CODE_GAL_E5Q]  */
+     {CODE_L5X, SYS_GAL, 3},     /* [CODE_GAL_E5X]  */
+     {CODE_L1C, SYS_QZS, 0},     /* [CODE_QZS_L1CA] */
+     {CODE_L2S, SYS_QZS, 1},     /* [CODE_QZS_L2CM] */
+     {CODE_L2L, SYS_QZS, 1},     /* [CODE_QZS_L2CL] */
+     {CODE_L2X, SYS_QZS, 1},     /* [CODE_QZS_L2CX] */
+     {CODE_L5I, SYS_QZS, 3},     /* [CODE_QZS_L5I]  */
+     {CODE_L5Q, SYS_QZS, 3},     /* [CODE_QZS_L5Q]  */
+     {CODE_L5X, SYS_QZS, 3}};    /* [CODE_QZS_L5X]  */
+
 /* checksum lookup table -----------------------------------------------------*/
 static const uint32_t CRC_16CCIT_LookUp[256] = {
     0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108,
@@ -177,6 +222,7 @@ static const uint8_t decoding_table[256] = {
 
 static uint8_t puPayloadTmp[256];
 
+static const gtime_t time0 = {0};
 static int Base64_Decode(uint8_t *_pcData, uint32_t _uDataLen,
                          uint8_t *_puDecodedData, uint32_t *_puDecodedDataLen) {
   uint32_t i, j;
@@ -242,36 +288,8 @@ static uint16_t sbp_checksum(uint8_t *buff, int len) {
   return crc;
 }
 
-/* 8-bit week -> full week ---------------------------------------------------*/
-static void adj_utcweek(gtime_t time, double *utc) {
-  int week;
-
-  if (utc[3] >= 256.0)
-    return;
-  time2gpst(time, &week);
-  utc[3] += week / 256 * 256;
-  if (utc[3] < week - 128)
-    utc[3] += 256.0;
-  else if (utc[3] > week + 128)
-    utc[3] -= 256.0;
-}
-/* adjust daily roll-over of time
- * ---------------------------------------------*/
-static gtime_t adjday(gtime_t time, double tod) {
-  double ep[6], tod_p;
-  time2epoch(time, ep);
-  tod_p = ep[3] * 3600.0 + ep[4] * 60.0 + ep[5];
-  if (tod < tod_p - 43200.0)
-    tod += 86400.0;
-  else if (tod > tod_p + 43200.0)
-    tod -= 86400.0;
-  ep[3] = ep[4] = ep[5] = 0.0;
-  return timeadd(epoch2time(ep), tod);
-}
-
 /* flush observation data buffer ---------------------------------------------*/
 static int flushobuf(raw_t *raw) {
-  gtime_t time0 = {0};
   int i, j, n = 0;
 
   trace(3, "flushobuf: n=%d\n", raw->obuf.n);
@@ -296,8 +314,9 @@ static int flushobuf(raw_t *raw) {
       raw->obuf.data[i].code[j] = CODE_NONE;
     }
   }
-  for (i = 0; i < MAXSAT; i++)
+  for (i = 0; i < MAXSAT; i++) {
     raw->prCA[i] = raw->dpCA[i] = 0.0;
+  }
   return n > 0 ? 1 : 0;
 }
 /* clear buffer --------------------------------------------------------------*/
@@ -339,11 +358,12 @@ static uint8_t calculate_loss_of_lock(double dt, uint32_t prev_lock_time,
 static int decode_msgobs(raw_t *raw) {
   gtime_t time;
   double tow, dResTow, pseudorange, carr_phase, freq_doppler, delta_time;
-  int16_t i, ii, sat, n, week;
+  int16_t i, ii, sat, n, week, band_code;
   uint8_t *p = (raw->buff) + 6; /* jump to TOW location */
   uint8_t num_obs, lock_info;
-  uint32_t sys, prev_lockt = 0, curr_lockt = 0;
-  uint8_t flags, sat_id, band_code, cn0_int, code, freq, slip, half_cycle_amb;
+  uint32_t prev_lockt = 0, curr_lockt = 0;
+  uint8_t flags, sat_id, cn0_int, slip, half_cycle_amb;
+  uint32_t code = 0, sys = 0, freq = 0;
   int iDidFlush = 0, iSatFound = 0;
 
   trace(4, "SBF decode_msgobs: len=%d\n", raw->len);
@@ -395,57 +415,10 @@ static int decode_msgobs(raw_t *raw) {
       carr_phase = -carr_phase;
     }
 
-    switch (band_code) {
-    case 0: /* GPS L1C/A */
-      code = CODE_L1C;
-      sys = SYS_GPS;
-      freq = 0;
-      break;
-    case 1: /* GPS L2CM */
-      code = CODE_L2S;
-      sys = SYS_GPS;
-      freq = 1;
-      break;
-    case 2: /* SBAS L1C/A */
-      code = CODE_L1C;
-      sys = SYS_SBS;
-      freq = 0;
-      break;
-    case 3: /* Glonass L1C/A */
-      code = CODE_L1C;
-      sys = SYS_GLO;
-      freq = 0;
-      break;
-    case 4: /* Glonass L2C/A */
-      code = CODE_L2C;
-      sys = SYS_GLO;
-      freq = 1;
-      break;
-    case 5: /* GPS L1P */
-      code = CODE_L1P;
-      sys = SYS_GPS;
-      freq = 0;
-      break;
-    case 6: /* GPS L2P */
-      code = CODE_L2P;
-      sys = SYS_GPS;
-      freq = 1;
-      break;
-    case 12: /* Beidou B1 */
-      code = CODE_L1I;
-      sys = SYS_CMP;
-      freq = 0;
-      break;
-    case 13: /* Beidou B2 */
-      code = CODE_L7I;
-      sys = SYS_CMP;
-      freq = 1;
-      break;
-    default:
-      code = CODE_NONE;
-      sys = SYS_GPS;
-      freq = 0;
-      break;
+    if ((CODE_INVALID != band_code) && (band_code < CODE_COUNT)) {
+      code = rtklib_bandcode_map[band_code].code;
+      sys = rtklib_bandcode_map[band_code].sys;
+      freq = rtklib_bandcode_map[band_code].freq;
     }
 
     /* store satellite number */
@@ -476,8 +449,8 @@ static int decode_msgobs(raw_t *raw) {
       if (flags & 0x2) {
         prev_lockt = rtcm_phase_lock_table[(raw->halfc[sat - 1][freq])];
         curr_lockt = rtcm_phase_lock_table[lock_info];
-        slip = calculate_loss_of_lock(delta_time * 1000.0, prev_lockt,
-                                       curr_lockt);
+        slip =
+            calculate_loss_of_lock(delta_time * 1000.0, prev_lockt, curr_lockt);
         half_cycle_amb = (flags & 0x4) ? 0 : 1;
         if (half_cycle_amb) {
           slip |= 0x2; /* half-cycle ambiguity unresolved */
@@ -498,30 +471,18 @@ static int decode_msgobs(raw_t *raw) {
   return iDidFlush;
 }
 
-/* adjust weekly roll-over of gps time
- * ----------------------------------------*/
-static gtime_t adjweek(gtime_t time, double tow) {
-  double tow_p;
-  int week;
-  tow_p = time2gpst(time, &week);
-  if (tow < tow_p - 302400.0)
-    tow += 604800.0;
-  else if (tow > tow_p + 302400.0)
-    tow -= 604800.0;
-  return gpst2time(week, tow);
-}
-
 /* common part of GPS eph decoding (navigation data)
  * --------------------------*/
-static void decode_gpsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
+static void decode_gpsnav_common_dep1(uint8_t *_pBuff, eph_t *_pEph) {
   uint16_t uWeekE, uWeekC;
   double dToc;
 
   _pEph->toes = U4(_pBuff + 4);
   uWeekE = U2(_pBuff + 8);
   _pEph->sva = uraindex(R8(_pBuff + 10), SYS_GPS); /* URA index */
-  _pEph->fit = U4(_pBuff + 14) ? 0 : 4;
-  _pEph->flag = U1(_pBuff + 15);
+  _pEph->fit = U4(_pBuff + 18) / 3600;
+  /* _pEph->flag = U1(_pBuff + 22); SBP payload does not have L2 flag */
+  _pEph->svh = U1(_pBuff + 23);
 
   _pEph->tgd[0] = R8(_pBuff + 24);
   _pEph->crs = R8(_pBuff + 32);
@@ -555,28 +516,28 @@ static void decode_gpsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
   _pEph->toc = gpst2time(uWeekC, dToc);
 }
 
-/* common part of BDS eph decoding (navigation data)
+/* common part of GPS eph decoding (navigation data)
  * --------------------------*/
-static void decode_bdsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
+static void decode_gpsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
   uint16_t uWeekE, uWeekC;
   double dToc;
 
-  _pEph->toes = U4(_pBuff + 4) - BDS_SECOND_TO_GPS_SECOND;
+  _pEph->toes = U4(_pBuff + 4);
   uWeekE = U2(_pBuff + 8);
   _pEph->sva = uraindex(R4(_pBuff + 10), SYS_CMP); /* URA index */
-  _pEph->fit = U4(_pBuff + 14) ? 0 : 4;
-  _pEph->flag = U1(_pBuff + 18);
+  _pEph->fit = U4(_pBuff + 14) / 3600;
+  /* _pEph->flag = U1(_pBuff + 18); SBP payload does not have L2 flag */
+  _pEph->svh = U1(_pBuff + 19);
 
   _pEph->tgd[0] = R4(_pBuff + 20);
-  _pEph->tgd[1] = R4(_pBuff + 24);
-  _pEph->crs = R4(_pBuff + 28);
-  _pEph->crc = R4(_pBuff + 32);
-  _pEph->cuc = R4(_pBuff + 36);
-  _pEph->cus = R4(_pBuff + 40);
-  _pEph->cic = R4(_pBuff + 44);
-  _pEph->cis = R4(_pBuff + 48);
-
-  _pEph->deln = R4(_pBuff + 52);
+  _pEph->crs = R4(_pBuff + 24);
+  _pEph->crc = R4(_pBuff + 28);
+  _pEph->cuc = R4(_pBuff + 32);
+  _pEph->cus = R4(_pBuff + 36);
+  _pEph->cic = R4(_pBuff + 40);
+  _pEph->cis = R4(_pBuff + 44);
+
+  _pEph->deln = R8(_pBuff + 48);
   _pEph->M0 = R8(_pBuff + 56);
   _pEph->e = R8(_pBuff + 64);
   _pEph->A = pow(R8(_pBuff + 72), 2);
@@ -584,9 +545,9 @@ static void decode_bdsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
   _pEph->OMGd = R8(_pBuff + 88);
   _pEph->omg = R8(_pBuff + 96);
   _pEph->i0 = R8(_pBuff + 104);
-  _pEph->idot = R4(_pBuff + 112);
+  _pEph->idot = R8(_pBuff + 112);
 
-  _pEph->f0 = R8(_pBuff + 116);
+  _pEph->f0 = R4(_pBuff + 120);
   _pEph->f1 = R4(_pBuff + 124);
   _pEph->f2 = R4(_pBuff + 128);
 
@@ -595,6 +556,51 @@ static void decode_bdsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
   _pEph->iode = U1(_pBuff + 138);
   _pEph->iodc = U2(_pBuff + 139);
 
+  _pEph->week = adjgpsweek(uWeekE);
+  _pEph->toe = gpst2time(_pEph->week, _pEph->toes);
+  _pEph->toc = gpst2time(uWeekC, dToc);
+}
+
+/* common part of BDS eph decoding (navigation data)
+ * --------------------------*/
+static void decode_bdsnav_common(uint8_t *_pBuff, eph_t *_pEph) {
+  uint16_t uWeekE, uWeekC;
+  double dToc;
+
+  _pEph->toes = U4(_pBuff + 4) - BDS_SECOND_TO_GPS_SECOND;
+  uWeekE = U2(_pBuff + 8);
+  _pEph->sva = uraindex(R4(_pBuff + 10),SYS_CMP); /* URA index */
+  _pEph->fit = U4(_pBuff + 14) ? 0 : 4;
+  _pEph->flag = U1(_pBuff + 18);
+
+  _pEph->tgd[0] = R4(_pBuff + 20);
+  _pEph->tgd[1] = R4(_pBuff + 24);
+  _pEph->crs = R4(_pBuff + 28);
+  _pEph->crc = R4(_pBuff + 32);
+  _pEph->cuc = R4(_pBuff + 36);
+  _pEph->cus = R4(_pBuff + 40);
+  _pEph->cic = R4(_pBuff + 44);
+  _pEph->cis = R4(_pBuff + 48);
+
+  _pEph->deln = R8(_pBuff + 52);
+  _pEph->M0 = R8(_pBuff + 60);
+  _pEph->e = R8(_pBuff + 68);
+  _pEph->A = pow(R8(_pBuff + 76), 2);
+  _pEph->OMG0 = R8(_pBuff + 84);
+  _pEph->OMGd = R8(_pBuff + 92);
+  _pEph->omg = R8(_pBuff + 100);
+  _pEph->i0 = R8(_pBuff + 108);
+  _pEph->idot = R8(_pBuff + 116);
+
+  _pEph->f0 = R8(_pBuff + 124);
+  _pEph->f1 = R4(_pBuff + 132);
+  _pEph->f2 = R4(_pBuff + 136);
+
+  dToc = U4(_pBuff + 140);
+  uWeekC = U2(_pBuff + 144); /* WN */
+  _pEph->iode = U1(_pBuff + 146);
+  _pEph->iodc = U2(_pBuff + 147);
+
   _pEph->week = adjgpsweek(uWeekE) - BDS_WEEK_TO_GPS_WEEK;
   _pEph->toe = gpst2time(_pEph->week, _pEph->toes);
   _pEph->toc = gpst2time(uWeekC, dToc);
@@ -621,24 +627,24 @@ static void decode_galnav_common(uint8_t *_pBuff, eph_t *_pEph) {
   _pEph->cic = R4(_pBuff + 44);
   _pEph->cis = R4(_pBuff + 48);
 
-  _pEph->deln = R4(_pBuff + 52);
-  _pEph->M0 = R8(_pBuff + 56);
-  _pEph->e = R8(_pBuff + 64);
-  _pEph->A = pow(R8(_pBuff + 72), 2);
-  _pEph->OMG0 = R8(_pBuff + 80);
-  _pEph->OMGd = R8(_pBuff + 88);
-  _pEph->omg = R8(_pBuff + 96);
-  _pEph->i0 = R8(_pBuff + 104);
-  _pEph->idot = R4(_pBuff + 112);
-
-  _pEph->f0 = R8(_pBuff + 116);
-  _pEph->f1 = R8(_pBuff + 124);
-  _pEph->f2 = R4(_pBuff + 132);
-
-  dToc = U4(_pBuff + 136);
-  uWeekC = U2(_pBuff + 140); /* WN */
-  _pEph->iode = U2(_pBuff + 142);
-  _pEph->iodc = U2(_pBuff + 144);
+  _pEph->deln = R8(_pBuff + 52);
+  _pEph->M0 = R8(_pBuff + 60);
+  _pEph->e = R8(_pBuff + 68);
+  _pEph->A = pow(R8(_pBuff + 76), 2);
+  _pEph->OMG0 = R8(_pBuff + 84);
+  _pEph->OMGd = R8(_pBuff + 92);
+  _pEph->omg = R8(_pBuff + 100);
+  _pEph->i0 = R8(_pBuff + 108);
+  _pEph->idot = R8(_pBuff + 116);
+
+  _pEph->f0 = R8(_pBuff + 124);
+  _pEph->f1 = R8(_pBuff + 132);
+  _pEph->f2 = R4(_pBuff + 140);
+
+  dToc = U4(_pBuff + 144);
+  uWeekC = U2(_pBuff + 148); /* WN */
+  _pEph->iode = U2(_pBuff + 150);
+  _pEph->iodc = U2(_pBuff + 152);
 
   _pEph->week = adjgpsweek(uWeekE);
   _pEph->toe = gpst2time(_pEph->week, _pEph->toes);
@@ -672,15 +678,77 @@ static int decode_gpsnav_dep1(raw_t *raw) {
 
   eph.code = U1(puiTmp + 2);
 
-  decode_gpsnav_common(puiTmp, &eph);
+  decode_gpsnav_common_dep1(puiTmp, &eph);
+
+  if (0 == timediff(raw->time, time0)) {
+    eph.ttr = timeget();
+  } else {
+    eph.ttr = raw->time;
+  }
+
+  if (!strstr(raw->opt, "EPHALL")) {
+    if ((eph.iode == raw->nav.eph[sat - 1].iode) &&
+        (eph.iodc == raw->nav.eph[sat - 1].iodc)) {
+      trace(3, "eph.iode %d raw->nav.eph[sat - 1].iode %d\n", eph.iode,
+            raw->nav.eph[sat - 1].iode);
+      trace(3, "eph.iodc %d raw->nav.eph[sat - 1].iodc %d\n", eph.iode,
+            raw->nav.eph[sat - 1].iode);
+      return 0;
+    }
+  }
+
+  eph.sat = sat;
+  raw->nav.eph[sat - 1] = eph;
+  raw->ephsat = sat;
+  return 2;
+}
+
+/* decode SBP nav message for GPS (navigation data) --------------------------*/
+static int decode_gpsnav_dep2(raw_t *raw) {
+
+  uint8_t *puiTmp = (raw->buff) + 6;
+  eph_t eph = {0};
+  uint8_t prn, sat;
+
+  trace(4, "SBP decode_gpsnav: len=%d\n", raw->len);
+
+  if ((raw->len) < 191) {
+    trace(2, "SBP decode_gpsnav frame length error: len=%d\n", raw->len);
+    return -1;
+  }
+
+  prn = puiTmp[0];
+  if (!((prn >= 1) && (prn <= 37))) {
+    trace(2, "SBP decode_gpsnav prn error: sat=%d\n", prn);
+    return -1;
+  }
+
+  sat = satno(SYS_GPS, prn);
+  if (sat == 0)
+    return -1;
 
+  eph.code = puiTmp[1];
+  if ((CODE_GPS_L1CA != eph.code)) {
+    trace(2, "Unrecognised code %d for G%02d\n", eph.code, prn);
+    return -1;
+  }
+
+  decode_gpsnav_common_dep1(puiTmp - 2, &eph);
+
+  if (0 == timediff(raw->time, time0)) {
+    eph.ttr = timeget();
+  } else {
   eph.ttr = raw->time;
+  }
 
   if (!strstr(raw->opt, "EPHALL")) {
     if ((eph.iode == raw->nav.eph[sat - 1].iode) &&
-        (eph.iodc == raw->nav.eph[sat - 1].iodc))
+        (eph.iodc == raw->nav.eph[sat - 1].iodc)) {
       return 0;
   }
+  }
+
+  trace(2, "decoded eph for G%02d\n", prn);
 
   eph.sat = sat;
   raw->nav.eph[sat - 1] = eph;
@@ -697,7 +765,7 @@ static int decode_gpsnav(raw_t *raw) {
 
   trace(4, "SBP decode_gpsnav: len=%d\n", raw->len);
 
-  if ((raw->len) < 191) {
+  if ((raw->len) < 147) {
     trace(2, "SBP decode_gpsnav frame length error: len=%d\n", raw->len);
     return -1;
   }
@@ -720,11 +788,19 @@ static int decode_gpsnav(raw_t *raw) {
 
   decode_gpsnav_common(puiTmp - 2, &eph);
 
+  if (0 == timediff(raw->time, time0)) {
+    eph.ttr = timeget();
+  } else {
   eph.ttr = raw->time;
+  }
 
   if (!strstr(raw->opt, "EPHALL")) {
     if ((eph.iode == raw->nav.eph[sat - 1].iode) &&
         (eph.iodc == raw->nav.eph[sat - 1].iodc)) {
+      trace(3, "eph.iode %d raw->nav.eph[sat - 1].iode %d\n", eph.iode,
+            raw->nav.eph[sat - 1].iode);
+      trace(3, "eph.iodc %d raw->nav.eph[sat - 1].iodc %d\n", eph.iode,
+            raw->nav.eph[sat - 1].iode);
       return 0;
     }
   }
@@ -746,7 +822,7 @@ static int decode_bdsnav(raw_t *raw) {
 
   trace(4, "SBP decode_bdsnav: len=%d\n", raw->len);
 
-  if ((raw->len) < 147) {
+  if ((raw->len) < 155) {
     trace(2, "SBP decode_bdsnav frame length error: len=%d\n", raw->len);
     return -1;
   }
@@ -762,7 +838,7 @@ static int decode_bdsnav(raw_t *raw) {
     return -1;
 
   eph.code = puiTmp[1];
-  if ((CODE_BDS2_B11 != eph.code)) {
+  if ((CODE_BDS2_B1 != eph.code) && (CODE_BDS2_B2 != eph.code)) {
     trace(2, "Unrecognised code %d for C%02d\n", eph.code, prn);
     return -1;
   }
@@ -795,7 +871,7 @@ static int decode_galnav(raw_t *raw) {
 
   trace(4, "SBP decode_galnav: len=%d\n", raw->len);
 
-  if ((raw->len) < 152) {
+  if ((raw->len) < 160) {
     trace(2, "SBP decode_galnav frame length error: len=%d\n", raw->len);
     return -1;
   }
@@ -811,7 +887,7 @@ static int decode_galnav(raw_t *raw) {
     return -1;
 
   eph.code = puiTmp[1];
-  if ((CODE_GAL_E1B != eph.code)) {
+  if ((CODE_GAL_E1B != eph.code) && (CODE_GAL_E7I != eph.code)) {
     trace(2, "Unrecognised code %d for E%02d\n", eph.code, prn);
     return -1;
   }
@@ -837,7 +913,7 @@ static int decode_galnav(raw_t *raw) {
 
 /* decode SBP nav message for Glonass (navigation data)
  * --------------------------*/
-static int decode_glonav(raw_t *raw) {
+static int decode_glonav_dep1(raw_t *raw) {
   uint8_t *puiTmp = (raw->buff) + 6;
   geph_t geph = {0};
   uint8_t prn, sat, code;
@@ -911,12 +987,86 @@ static int decode_glonav(raw_t *raw) {
   return 2;
 }
 
+/* decode SBP nav message for Glonass (navigation data)
+ * --------------------------*/
+static int decode_glonav(raw_t *raw) {
+  uint8_t *puiTmp = (raw->buff) + 6;
+  geph_t geph = {0};
+  uint8_t prn, sat, code;
+  uint16_t uWeekE;
+  double dSeconds;
+
+  trace(4, "SBP decode_glonav: len=%d\n", raw->len);
+
+  if ((raw->len) < 100) {
+    trace(2, "SBP decode_glonav frame length error: len=%d\n", raw->len);
+    return -1;
+  }
+
+  prn = puiTmp[0]; /* Glonass sid.sat */
+  sat = satno(SYS_GLO, prn);
+
+  if (sat == 0)
+    return -1;
+
+  if (!((prn >= 1) && (prn <= 28))) {
+    trace(2, "SBP decode_glonav prn error: prn=%d\n", prn);
+    return -1;
+  }
+
+  geph.sat = sat;
+  code = puiTmp[1];
+
+  if ((code != CODE_GLO_L1OF) && (code != CODE_GLO_L2OF)) {
+    trace(2, "SBP decode_glonav code error: code=%d\n", code);
+  }
+
+  dSeconds = (double)U4(puiTmp + 2);
+  uWeekE = U2(puiTmp + 6);
+  geph.toe = gpst2time(uWeekE, dSeconds);
+
+  dSeconds = dSeconds - floor(dSeconds / SEC_DAY) * SEC_DAY;
+  dSeconds = floor((dSeconds + 900) / 1800) * 1800;
+  geph.tof = utc2gpst(gpst2time(uWeekE, dSeconds));
+  geph.iode = (int)puiTmp[91];
+
+  geph.sva = (int)R4(puiTmp + 8); /* URA */
+  geph.age = U4(puiTmp + 12);     /* fit interval */
+  geph.svh = puiTmp[17];          /* health */
+  geph.gamn = R4(puiTmp + 18);    /* */
+  geph.taun = R4(puiTmp + 22);    /* */
+  geph.dtaun = R4(puiTmp + 26);   /* */
+
+  geph.pos[0] = R8(puiTmp + 30);
+  geph.pos[1] = R8(puiTmp + 38);
+  geph.pos[2] = R8(puiTmp + 46);
+
+  geph.vel[0] = R8(puiTmp + 54);
+  geph.vel[1] = R8(puiTmp + 62);
+  geph.vel[2] = R8(puiTmp + 70);
+
+  geph.acc[0] = R4(puiTmp + 78);
+  geph.acc[1] = R4(puiTmp + 82);
+  geph.acc[2] = R4(puiTmp + 86);
+
+  geph.frq = (int)puiTmp[90] - 8;
+
+  if (!strstr(raw->opt, "EPHALL")) {
+    if (geph.iode == raw->nav.geph[prn - 1].iode)
+      return 0; /* unchanged */
+  }
+
+  trace(2, "decoded eph for R%02d\n", prn);
+
+  raw->nav.geph[prn - 1] = geph;
+  raw->ephsat = sat;
+  return 2;
+}
+
 /* decode SBF gpsion --------------------------------------------------------*/
 static int decode_gpsion(raw_t *raw) {
 
   uint8_t *puiTmp = (raw->buff) + 6;
-  uint32_t uTowMs;
-  uint16_t uWeek;
 
   trace(4, "SBP decode_gpsion: len=%d\n", raw->len);
 
@@ -925,10 +1075,6 @@ static int decode_gpsion(raw_t *raw) {
     return -1;
   }
 
-  /* Get time information */
-  uTowMs = U4(puiTmp + 0); /* TOW in ms */
-  uWeek = I4(puiTmp + 4);  /* Week number */
-
   raw->nav.ion_gps[0] = R8(puiTmp + 6);
   raw->nav.ion_gps[1] = R8(puiTmp + 14);
   raw->nav.ion_gps[2] = R8(puiTmp + 18);
@@ -999,7 +1145,7 @@ static int decode_sbp(raw_t *raw) {
   if ((sender != 0) && (NULL != strstr(raw->opt, "CONVBASE")))
     return 0;
 
-  trace(3, "decode_sbp: type=%04x len=%d\n", type, raw->len);
+  trace(4, "decode_sbp: type=%04x len=%d\n", type, raw->len);
 
   /* read the SBF block CRC */
   crc = U2(raw->buff + (raw->len) - 2);
@@ -1020,12 +1166,16 @@ static int decode_sbp(raw_t *raw) {
     return decode_msgobs(raw);
   case ID_MSGEPHGPS_DEP1:
     return decode_gpsnav_dep1(raw);
+  case ID_MSGEPHGPS_DEP2:
+    return decode_gpsnav_dep2(raw);
   case ID_MSGEPHGPS:
     return decode_gpsnav(raw);
   case ID_MSGEPHBDS:
     return decode_bdsnav(raw);
   case ID_MSGEPHGAL:
     return decode_galnav(raw);
+  case ID_MSGEPHGLO_DEP1:
+    return decode_glonav_dep1(raw);
   case ID_MSGEPHGLO:
     return decode_glonav(raw);
   case ID_MSGIONGPS:
@@ -1034,7 +1184,7 @@ static int decode_sbp(raw_t *raw) {
     return decode_snav(raw);
 
   default:
-    trace(3, "decode_sbp: unused frame type=%04x len=%d\n", type, raw->len);
+    trace(4, "decode_sbp: unused frame type=%04x len=%d\n", type, raw->len);
     /* there are many more SBF blocks to be extracted */
   }
   return 0;
@@ -1186,8 +1336,9 @@ extern int input_sbpjsonf(raw_t *raw, FILE *fp) {
   /* avoid parsing the payload if the message isn't supported in the first place
    */
   if ((uMsgType != ID_MEASEPOCH) && (uMsgType != ID_MSGEPHGPS_DEP1) &&
-      (uMsgType != ID_MSGEPHGPS) && (uMsgType != ID_MSGEPHGLO) &&
+      (uMsgType != ID_MSGEPHGPS_DEP2) && (uMsgType != ID_MSGEPHGPS) &&
       (uMsgType != ID_MSGEPHBDS) && (uMsgType != ID_MSGEPHGAL) &&
+      (uMsgType != ID_MSGEPHGLO_DEP1) && (uMsgType != ID_MSGEPHGLO) &&
       (uMsgType != ID_MSGIONGPS) && (uMsgType != ID_MSG_SBAS_RAW)) {
     return 0;
   }
diff --git a/src/rcv/ublox.c b/src/rcv/ublox.c
index 40d04ed120f495016523744a6a86404cfc63c5e9..00040847f6768e6992a5908338ee6fe40fe78c74 100644
--- a/src/rcv/ublox.c
+++ b/src/rcv/ublox.c
@@ -196,7 +196,7 @@ static int decode_rxmraw(raw_t *raw)
     
     for (i=0,p+=8;i<nsat&&i<MAXOBS;i++,p+=24) {
         raw->obs.data[n].time=time;
-        raw->obs.data[n].L[0]  =R8(p   )-toff*FREQ1;
+        raw->obs.data[n].L[0]  =R8(p   )-toff*FREQL1;
         raw->obs.data[n].P[0]  =R8(p+ 8)-toff*CLIGHT;
         raw->obs.data[n].D[0]  =R4(p+16);
         prn                    =U1(p+20);
@@ -235,9 +235,9 @@ static int decode_rxmraw(raw_t *raw)
 static int decode_rxmrawx(raw_t *raw)
 {
     gtime_t time;
-    double tow,cp1,pr1,tadj=0.0,toff=0.0,freq,tn;
-    int i,j,sys,prn,sat,n=0,nsat,week,tstat,lockt,halfv,halfc,fcn;
-    int cpstd,prstd,std_slip=0;
+    double tow,cp1,pr1,tadj=0.0,toff=0.0,frq,freq,tn;
+    int i,j,sys,prn,sat,n=0,nextn=0,nsat,week,tstat,lockt,halfv,halfc,fcn;
+    int cpstd,prstd,sigid,std_slip=0;
     char *q;
     unsigned char *p=raw->buff+6;
     
@@ -285,42 +285,79 @@ static int decode_rxmrawx(raw_t *raw)
             trace(2,"ubx rxmrawx sat number error: sys=%2d prn=%2d\n",sys,prn);
             continue;
         }
+        sigid=U1(p+22)&7;  /* signal identifier */
         prstd=U1(p+27)&15; /* pseudorange std-dev */
         prstd=1<<(prstd>=5?prstd-5:0); /* prstd=2^(x-5) */
         prstd=prstd<=9?prstd:9;  /* limit to 9 to fit RINEX format */
         cpstd=U1(p+28)&15; /* carrier-phase std-dev */
         tstat=U1(p+30); /* tracking status */
         pr1=tstat&1?R8(p  ):0.0;
+
+        /* set freq and code */
+        switch (sigid) {
+            case 0: frq=0;break;
+            case 1: frq=0;break;
+            case 2: frq=1;break;
+            case 3: frq=1;break;
+            case 4: frq=1;break;
+            case 5: frq=2;break;
+            case 6: frq=2;break;
+        }
+
+        /* find obs record if freq>0 */
+        if (frq==0) {
+            /* start new obs record */
+            n=nextn++;
+            for (j=0;j<NFREQ+NEXOBS;j++) {
+                raw->obs.data[n].L[j]=raw->obs.data[n].P[j]=0.0;
+                raw->obs.data[n].D[j]=0.0;
+                raw->obs.data[n].SNR[j]=raw->obs.data[n].LLI[j]=0;
+                raw->obs.data[n].code[j]=CODE_NONE;
+            }
+        } else { /* find existing record */
+            for ((j=0);j<nextn;j++)
+                if (raw->obs.data[j].sat==sat) break;
+            n=j;
+        }
+
+        if (frq==0) {
+            raw->obs.data[n].code[0]=
+                sys==SYS_CMP?CODE_L1I:CODE_L1C;
+        } else if (frq==1) {
+            raw->obs.data[n].code[1]=
+                sys==SYS_CMP?CODE_L7I:(sys==SYS_GLO?CODE_L2C:CODE_L2L);
+        } else if (frq==2) {
+            raw->obs.data[n].code[2]=CODE_L7Q;
+        }
+
         /* indicate phase ok if locked and std<=slip threshold */
         cp1=tstat&2?R8(p+8):0.0;
         if (cp1==-0.5||cpstd>CPSTD_VALID) cp1=0.0; /* invalid phase */
         raw->obs.data[n].sat=sat;
         raw->obs.data[n].time=time;
-        raw->obs.data[n].P[0]=pr1;
-        raw->obs.data[n].L[0]=cp1;
-        raw->obs.data[n].qualL[0]=cpstd<=7?cpstd:0;
-        raw->obs.data[n].qualP[0]=prstd;
+        raw->obs.data[n].P[frq]=pr1;
+        raw->obs.data[n].L[frq]=cp1;
+        raw->obs.data[n].qualL[frq]=cpstd<=7?cpstd:0;
+        raw->obs.data[n].qualP[frq]=prstd;
         
         /* offset by time tag adjustment */
         if (toff!=0.0&&cp1!=0) {
             fcn=(int)U1(p+23)-7;
             freq=sys==SYS_CMP?FREQ1_CMP:
-                 (sys==SYS_GLO?FREQ1_GLO+DFRQ1_GLO*fcn:FREQ1);
-            raw->obs.data[n].P[0]-=toff*CLIGHT;
-            raw->obs.data[n].L[0]-=toff*freq;
+                 (sys==SYS_GLO?FREQ1_GLO+DFRQ1_GLO*fcn:FREQL1);
+            raw->obs.data[n].P[frq]-=toff*CLIGHT;
+            raw->obs.data[n].L[frq]-=toff*freq;
         }
-        raw->obs.data[n].D[0]=R4(p+16);
-        raw->obs.data[n].SNR[0]=U1(p+26)*4;
+        raw->obs.data[n].D[frq]=R4(p+16);
+        raw->obs.data[n].SNR[frq]=U1(p+26)*4;
         /* indicate slip occurred if phase std>=slip threshold */
-        raw->obs.data[n].LLI[0]=0;
-        raw->obs.data[n].code[0]=
-            sys==SYS_CMP?CODE_L1I:(sys==SYS_GAL?CODE_L1X:CODE_L1C);
+        raw->obs.data[n].LLI[frq]=0;
         
         lockt=U2(p+24);    /* lock time count (ms) */
-        if (lockt==0||lockt<raw->lockt[sat-1][0]) raw->lockt[sat-1][1]=1;
-        raw->lockt[sat-1][0]=lockt;
+        if (lockt==0||lockt<raw->lockt[sat-1][frq]) raw->lockflag[sat-1][frq]=1;
+        raw->lockt[sat-1][frq]=lockt;
         if (std_slip>0) {
-            if (cpstd>=std_slip) raw->lockt[sat-1][1]=1; /* slip by std-dev of cp */
+            if (cpstd>=std_slip) raw->lockflag[sat-1][frq]=1; /* slip by std-dev of cp */
         }
         if (sys==SYS_SBS) { /* half-cycle valid */
             halfv=lockt>8000?1:0;
@@ -336,30 +373,17 @@ static int decode_rxmrawx(raw_t *raw)
 #endif
 
         if (cp1!=0.0) { /* carrier-phase valid */
-            
+
             /* LLI: bit1=loss-of-lock,bit2=half-cycle-invalid */
-            raw->obs.data[n].LLI[0]|=raw->lockt[sat-1][1]>0.0?LLI_SLIP:0;
-#if 1
-            raw->obs.data[n].LLI[0]|=halfc!=raw->halfc[sat-1][0]?1:0;
-#elif 0
-            raw->obs.data[n].LLI[0]|=halfc?LLI_HALFA:0; /* half-cycle subtraced */
-#else
-            raw->obs.data[n].LLI[0]|=halfc?LLI_HALFS:0; /* half-cycle subtraced */
-#endif
-            raw->obs.data[n].LLI[0]|=halfv?0:LLI_HALFC;
-            raw->halfc[sat-1][0]=halfc;
-            raw->lockt[sat-1][1]=0.0;
+            raw->obs.data[n].LLI[frq]|=raw->lockflag[sat-1][frq]>0.0?LLI_SLIP:0;
+            raw->obs.data[n].LLI[frq]|=halfc!=raw->halfc[sat-1][frq]?1:0;
+            raw->obs.data[n].LLI[frq]|=halfv?0:LLI_HALFC;
+            raw->halfc[sat-1][frq]=halfc;
+            raw->lockflag[sat-1][frq]=0.0;
         }
-        for (j=1;j<NFREQ+NEXOBS;j++) {
-            raw->obs.data[n].L[j]=raw->obs.data[n].P[j]=0.0;
-            raw->obs.data[n].D[j]=0.0;
-            raw->obs.data[n].SNR[j]=raw->obs.data[n].LLI[j]=0;
-            raw->obs.data[n].code[j]=CODE_NONE;
-        }
-        n++;
     }
     raw->time=time;
-    raw->obs.n=n;
+    raw->obs.n=nextn;
     return 1;
 }
 /* save subframe -------------------------------------------------------------*/
diff --git a/src/rinex.c b/src/rinex.c
index e53704ab0b39268289514d3b5eb36489364f6008..ced5a615dd32e405f7f9e8d9517804d44a84fc04 100644
--- a/src/rinex.c
+++ b/src/rinex.c
@@ -779,7 +779,7 @@ static int decode_obsdata(FILE *fp, char *buff, double ver, int mask,
     }
     /* save obs data */
     for (i=0;i<ind->n;i++) {
-        if (p[i]<0||val[i]==0.0) continue;
+        if (p[i]<0||(val[i]==0.0&&lli[i]==0)) continue;
         switch (ind->type[i]) {
             case 0: obs->P[p[i]]=val[i];
                     obs->code[p[i]]=ind->code[i];
@@ -917,7 +917,7 @@ static void set_index(double ver, int sys, const char *opt,
     }
     for (i=0;i<n;i++) {
         if (!ind->code[i]||!ind->pri[i]||ind->pos[i]>=0) continue;
-        trace(4,"reject obs type: sys=%2d, obs=%s\n",sys,tobs[i]);
+        trace(3,"reject obs type: sys=%2d, obs=%s\n",sys,tobs[i]);
     }
     ind->n=n;
     
@@ -1876,7 +1876,7 @@ extern int outrnxobsh(FILE *fp, const rnxopt_t *opt, const nav_t *nav)
     else { /* ver.3 */
         if      (opt->navsys==SYS_GPS) sys="G: GPS";
         else if (opt->navsys==SYS_GLO) sys="R: GLONASS";
-        else if (opt->navsys==SYS_GAL) sys="E: Galielo";
+        else if (opt->navsys==SYS_GAL) sys="E: Galileo";
         else if (opt->navsys==SYS_QZS) sys="J: QZSS";   /* ver.3.02 */
         else if (opt->navsys==SYS_CMP) sys="C: BeiDou"; /* ver.3.02 */
         else if (opt->navsys==SYS_IRN) sys="I: IRNSS";  /* ver.3.03 */
diff --git a/src/rtcm3e.c b/src/rtcm3e.c
index f058a60dc0f12d26c2a011074e23c6b2591dbaa4..f0afd0332cefa297cb40490518df7fa0ef5206d7 100644
--- a/src/rtcm3e.c
+++ b/src/rtcm3e.c
@@ -211,8 +211,8 @@ static void gen_obs_gps(rtcm_t *rtcm, const obsd_t *data, int *code1, int *pr1,
     double P0,L0,P1,L1;
     int lt1,lt2;
     
-    lam1=CLIGHT/FREQ1;
-    lam2=CLIGHT/FREQ2;
+    lam1=CLIGHT/FREQL1;
+    lam2=CLIGHT/FREQL2;
     *pr1=*amb=0;
     if (ppr1) *ppr1=0xFFF80000; /* invalid values */
     if (pr21) *pr21=0xFFFFE000;
@@ -221,9 +221,9 @@ static void gen_obs_gps(rtcm_t *rtcm, const obsd_t *data, int *code1, int *pr1,
     /* adjust P and L for consistency with time tag adjustment */
     P0=L0=P1=L1=0;
     if (data->P[0]!=0.0) P0=data->P[0]-tadj*CLIGHT;
-    if (data->L[0]!=0.0) L0=data->L[0]-tadj*FREQ1;
+    if (data->L[0]!=0.0) L0=data->L[0]-tadj*FREQL1;
     if (data->P[1]!=0.0) P1=data->P[1]-tadj*CLIGHT;
-    if (data->L[1]!=0.0) L1=data->L[1]-tadj*FREQ2;
+    if (data->L[1]!=0.0) L1=data->L[1]-tadj*FREQL2;
 
     /* L1 pseudorange */
     if (P0!=0.0&&data->code[0]) {
diff --git a/src/rtkcmn.c b/src/rtkcmn.c
index 54f0ca040b6c957a92a9052e4048eca760f88d47..91075a3e9f769a14fd8dd48defc5e2ddf4243a54 100644
--- a/src/rtkcmn.c
+++ b/src/rtkcmn.c
@@ -182,8 +182,8 @@ const double chisqr[100]={      /* chi-sqr(n) (alpha=0.001) */
     138 ,139 ,140 ,142 ,143 ,144 ,145 ,147 ,148 ,149
 };
 const double lam_carr[MAXFREQ]={ /* carrier wave length (m) */
-    CLIGHT/FREQ1,CLIGHT/FREQ2,CLIGHT/FREQ5,CLIGHT/FREQ6,CLIGHT/FREQ7,
-    CLIGHT/FREQ8,CLIGHT/FREQ9
+    CLIGHT/FREQL1,CLIGHT/FREQL2,CLIGHT/FREQE5b,CLIGHT/FREQL5,CLIGHT/FREQE6,
+    CLIGHT/FREQE5ab,CLIGHT/FREQs
 };
 const prcopt_t prcopt_default={ /* defaults processing options */
     PMODE_SINGLE,0,2,SYS_GPS,   /* mode,soltype,nf,navsys */
@@ -248,24 +248,24 @@ static char *obscodes[]={       /* observation code strings */
     "5B","5C","9A","9B","9C", "9X",""  ,""  ,""  ,""    /* 50-59 */
 };
 static unsigned char obsfreqs[]={
-    /* 1:L1/E1, 2:L2/B1, 3:L5/E5a/L3, 4:L6/LEX/B3, 5:E5b/B2, 6:E5(a+b), 7:S */
+    /* 1:L1/E1, 2:L2/B1, 3:E5b/B2, 4:L5/E5a/L3, 5:L6/LEX/B3, 6:E5(a+b), 7:S */
     0, 1, 1, 1, 1,  1, 1, 1, 1, 1, /*  0- 9 */
     1, 1, 1, 1, 2,  2, 2, 2, 2, 2, /* 10-19 */
-    2, 2, 2, 2, 3,  3, 3, 5, 5, 5, /* 20-29 */
-    4, 4, 4, 4, 4,  4, 4, 6, 6, 6, /* 30-39 */
-    2, 2, 4, 4, 3,  3, 3, 1, 1, 3, /* 40-49 */
-    3, 3, 7, 7, 7,  7, 0, 0, 0, 0  /* 50-59 */
+    2, 2, 2, 2, 4,  4, 4, 3, 3, 3, /* 20-29 */
+    5, 5, 5, 5, 5,  5, 5, 6, 6, 6, /* 30-39 */
+    2, 2, 5, 5, 4,  4, 4, 1, 1, 4, /* 40-49 */
+    4, 4, 7, 7, 7,  7, 0, 0, 0, 0  /* 50-59 */
 };
 static char codepris[7][MAXFREQ][16]={  /* code priority table */
-   
-   /* L1/E1      L2/B1        L5/E5a/L3 L6/LEX/B3 E5b/B2    E5(a+b)  S */
-    {"CPYWMNSL","PYWCMNDSLX","IQX"     ,""       ,""       ,""      ,""    }, /* GPS */
-    {"PC"      ,"PC"        ,"IQX"     ,""       ,""       ,""      ,""    }, /* GLO */
-    {"CABXZ"   ,""          ,"IQX"     ,"ABCXZ"  ,"IQX"    ,"IQX"   ,""    }, /* GAL */
-    {"CSLXZ"   ,"SLX"       ,"IQX"     ,"SLX"    ,""       ,""      ,""    }, /* QZS */
-    {"C"       ,""          ,"IQX"     ,""       ,""       ,""      ,""    }, /* SBS */
-    {"IQX"     ,"IQX"       ,"IQX"     ,"IQX"    ,"IQX"    ,""      ,""    }, /* BDS */
-    {""        ,""          ,"ABCX"    ,""       ,""       ,""      ,"ABCX"}  /* IRN */
+
+   /* L1/E1      L2/B1   E5b/B2  L5/E5a/L3 L6/LEX/B3     E5(a+b)  S */
+    {"CPYWMNSL","CLPYWMNDSX","IQX"   ,"IQX"   ,""        ,""      ,""    }, /* GPS */
+    {"PC"      ,"PC"        ,"IQX"   ,"IQX"   ,""        ,""      ,""    }, /* GLO */
+    {"CABXZ"   ,""          ,"IQX"   ,"IQX"   ,"ABCXZ"   ,"IQX"   ,""    }, /* GAL */
+    {"CSLXZ"   ,"SLX"       ,"IQX"   ,"IQX"   ,"SLX"     ,""      ,""    }, /* QZS */
+    {"C"       ,""          ,"IQX"   ,"IQX"   ,""        ,""      ,""    }, /* SBS */
+    {"IQX"     ,"IQX"       ,"IQX"   ,"IQX"   ,"IQX"     ,""      ,""    }, /* BDS */
+    {""        ,""          ,"ABCX"  ,"ABCX"  ,""        ,""      ,"ABCX"}  /* IRN */
 };
 static fatalfunc_t *fatalfunc=NULL; /* fatal callback function */
 
@@ -3377,13 +3377,13 @@ extern double satwavelen(int sat, int frq, const nav_t *nav)
         else if (frq==2) return CLIGHT/FREQ3_CMP; /* B3 */
     }
     else {
-        if      (frq==0) return CLIGHT/FREQ1; /* L1/E1 */
-        else if (frq==1) return CLIGHT/FREQ2; /* L2 */
-        else if (frq==2) return CLIGHT/FREQ5; /* L5/E5a */
-        else if (frq==3) return CLIGHT/FREQ6; /* L6/LEX */
-        else if (frq==4) return CLIGHT/FREQ7; /* E5b */
-        else if (frq==5) return CLIGHT/FREQ8; /* E5a+b */
-        else if (frq==6) return CLIGHT/FREQ9; /* S */
+        if      (frq==0) return CLIGHT/FREQL1; /* L1/E1 */
+        else if (frq==1) return CLIGHT/FREQL2; /* L2 */
+        else if (frq==2) return CLIGHT/FREQE5b; /* E5b */
+        else if (frq==3) return CLIGHT/FREQL5; /* L5/E5a */
+        else if (frq==4) return CLIGHT/FREQE6; /* L6/LEX */
+        else if (frq==5) return CLIGHT/FREQE5ab; /* E5a+b */
+        else if (frq==6) return CLIGHT/FREQs; /* S */
     }
     return 0.0;
 }
diff --git a/src/rtklib.h b/src/rtklib.h
index c7f52ce96302e4f948a022239c3911b854f3ea92..30c592826480921b6ca677bf4974216cb9c2848b 100644
--- a/src/rtklib.h
+++ b/src/rtklib.h
@@ -56,9 +56,9 @@ extern "C" {
 
 /* constants -----------------------------------------------------------------*/
 
-#define VER_RTKLIB  "2.4.3 demo5"             /* library version */
+#define VER_RTKLIB  "demo5"             /* library version */
 
-#define PATCH_LEVEL "b29d"               /* patch level */
+#define PATCH_LEVEL "b29e"               /* patch level */
 
 #define COPYRIGHT_RTKLIB \
             "Copyright (C) 2007-2018 T.Takasu\nAll rights reserved."
@@ -80,13 +80,13 @@ extern "C" {
 
 #define MAXFREQ     7                   /* max NFREQ */
 
-#define FREQ1       1.57542E9           /* L1/E1  frequency (Hz) */
-#define FREQ2       1.22760E9           /* L2     frequency (Hz) */
-#define FREQ5       1.17645E9           /* L5/E5a frequency (Hz) */
-#define FREQ6       1.27875E9           /* E6/LEX frequency (Hz) */
-#define FREQ7       1.20714E9           /* E5b    frequency (Hz) */
-#define FREQ8       1.191795E9          /* E5a+b  frequency (Hz) */
-#define FREQ9       2.492028E9          /* S      frequency (Hz) */
+#define FREQL1      1.57542E9           /* L1/E1  frequency 1 (Hz) */
+#define FREQL2      1.22760E9           /* L2     frequency 2 (Hz) */
+#define FREQE5b      1.20714E9          /* E5b    frequency 3 (Hz) */
+#define FREQL5      1.17645E9           /* L5/E5a frequency 4 (Hz) */
+#define FREQE6      1.27875E9           /* E6/LEX frequency 5 (Hz) */
+#define FREQE5ab    1.191795E9          /* E5a+b  frequency 6 (Hz) */
+#define FREQs       2.492028E9           /* S      frequency 7 (Hz) */
 #define FREQ1_GLO   1.60200E9           /* GLONASS G1 base frequency (Hz) */
 #define DFRQ1_GLO   0.56250E6           /* GLONASS G1 bias frequency (Hz/n) */
 #define FREQ2_GLO   1.24600E9           /* GLONASS G2 base frequency (Hz) */
@@ -273,11 +273,11 @@ extern "C" {
 
 #define FREQTYPE_L1 0x01                /* frequency type: L1/E1 */
 #define FREQTYPE_L2 0x02                /* frequency type: L2/B1 */
-#define FREQTYPE_L5 0x04                /* frequency type: L5/E5a/L3 */
-#define FREQTYPE_L6 0x08                /* frequency type: E6/LEX/B3 */
-#define FREQTYPE_L7 0x10                /* frequency type: E5b/B2 */
-#define FREQTYPE_L8 0x20                /* frequency type: E5(a+b) */
-#define FREQTYPE_L9 0x40                /* frequency type: S */
+#define FREQTYPE_E5b 0x04               /* frequency type: E5b/B2 */
+#define FREQTYPE_L5 0x08                /* frequency type: L5/E5a/L3 */
+#define FREQTYPE_E6 0x10                /* frequency type: E6/LEX/B3 */
+#define FREQTYPE_E5ab 0x20              /* frequency type: E5(a+b) */
+#define FREQTYPE_S 0x40                 /* frequency type: S */
 #define FREQTYPE_ALL 0xFF               /* frequency type: all */
 
 #define CODE_NONE   0                   /* obs code: none or unknown */
@@ -1049,7 +1049,7 @@ typedef struct {        /* SNR mask type */
 typedef struct {        /* processing options type */
     int mode;           /* positioning mode (PMODE_???) */
     int soltype;        /* solution type (0:forward,1:backward,2:combined) */
-    int nf;             /* number of frequencies (1:L1,2:L1+L2,3:L1+L2+L5) */
+    int nf;             /* number of frequencies (1:L1,2:L1+L2,3:L1+L2+E5b,4:L1+L2+E5b+L5) */
     int navsys;         /* navigation system */
     double elmin;       /* elevation mask angle (rad) */
     snrmask_t snrmask;  /* SNR mask */
@@ -1265,6 +1265,7 @@ typedef struct {        /* receiver raw data control type */
     unsigned char subfrm[MAXSAT][380];  /* subframe buffer */
     lexmsg_t lexmsg;    /* LEX message */
     double lockt[MAXSAT][NFREQ+NEXOBS]; /* lock time (s) */
+    unsigned char lockflag[MAXSAT][NFREQ+NEXOBS]; /* used for carrying forward cycle slip */
     double icpp[MAXSAT],off[MAXSAT],icpc; /* carrier params for ss2 */
     double prCA[MAXSAT],dpCA[MAXSAT]; /* L1/CA pseudrange/doppler for javad */
     unsigned char halfc[MAXSAT][NFREQ+NEXOBS]; /* half-cycle add flag */
diff --git a/src/rtkpos.c b/src/rtkpos.c
index f9132e85460d37daade61fb398fe2dda01b6fdc4..89eceb2c561bac90f936b816793edc8a83acda42 100644
--- a/src/rtkpos.c
+++ b/src/rtkpos.c
@@ -639,7 +639,7 @@ static void detslp_ll(rtk_t *rtk, const obsd_t *obs, int i, int rcv)
     
     for (f=0;f<rtk->opt.nf;f++) {
         
-        if (obs[i].L[f]==0.0||
+        if ((obs[i].L[f]==0.0&&obs[i].LLI[f]==0)||
             fabs(timediff(obs[i].time,rtk->ssat[sat-1].pt[rcv-1][f]))<DTTOL) {
             continue;
         }
diff --git a/src/solution.c b/src/solution.c
index 88937ca2803d5fbcdc94e90a8043b1fcc5bb89b7..cb62d1b07a4b7810200f2b0192c4fe3a7146e939 100644
--- a/src/solution.c
+++ b/src/solution.c
@@ -1444,8 +1444,7 @@ extern int outprcopts(unsigned char *buff, const prcopt_t *opt)
     const int sys[]={SYS_GPS,SYS_GLO,SYS_GAL,SYS_QZS,SYS_CMP,SYS_IRN,SYS_SBS,0};
     const char *s1[]={"single","dgps","kinematic","static","static-start","moving-base","fixed",
                  "ppp-kinematic","ppp-static","ppp-fixed",""};
-    const char *s2[]={"L1","L1+L2","L1+L2+L5","L1+L2+L5+L6","L1+L2+L5+L6+L7",
-                      "L1+L2+L5+L6+L7+L8",""};
+    const char *s2[]={"L1","L1+L2","L1+L2+E5b","L1+L2+E5b+L5"};
     const char *s3[]={"forward","backward","combined"};
     const char *s4[]={"off","broadcast","sbas","iono-free","estimation",
                       "ionex tec","qzs","lex","vtec_sf","vtec_ef","gtec",""};