diff --git a/src/ppp.c b/src/ppp.c
index a147796eab4d872e2f1f024867112f8f07d22463..89a9d810adc0ae47cc5c5cbd8fb0daf105521c9c 100644
--- a/src/ppp.c
+++ b/src/ppp.c
@@ -389,7 +389,7 @@ static void corr_meas(const obsd_t *obs, const nav_t *nav, const double *azel,
 {
     const double *lam=nav->lam[obs->sat-1];
     double C1,C2;
-    int i,sys,ix;
+    int i,sys,ix=0;
     
     sys=satsys(obs->sat,NULL);
     
@@ -445,16 +445,14 @@ static void corr_meas(const obsd_t *obs, const nav_t *nav, const double *azel,
 /* detect cycle slip by LLI --------------------------------------------------*/
 static void detslp_ll(rtk_t *rtk, const obsd_t *obs, int n)
 {
-    int i,j;
+    int i,j,nf;
     
     trace(3,"detslp_ll: n=%d\n",n);
-    
     for (i=0;i<n&&i<MAXOBS;i++) for (j=0;j<rtk->opt.nf;j++) {
         if (obs[i].L[j]==0.0||!(obs[i].LLI[j]&3)) continue;
-        
         trace(3,"detslp_ll: slip detected sat=%2d f=%d\n",obs[i].sat,j+1);
-        
-        rtk->ssat[obs[i].sat-1].slip[j]=1;
+        nf=rtk->opt.nf;/* fixes gcc compiler warning */
+        rtk->ssat[obs[i].sat-1].slip[j<nf?j:nf]=1;
     }
 }
 /* detect cycle slip by geometry free phase jump -----------------------------*/
diff --git a/src/rcv/binex.c b/src/rcv/binex.c
index bce80ad6bb5cc2b440a8fe56913badd7f3e64a4f..66536ff7aec0d33f647182ac4bebeb24030b4e30 100644
--- a/src/rcv/binex.c
+++ b/src/rcv/binex.c
@@ -36,11 +36,6 @@
 
 #define MIN(x,y)    ((x)<(y)?(x):(y))
 
-/* ura table -----------------------------------------------------------------*/
-static const double ura_eph[]={
-    2.4,3.4,4.85,6.85,9.65,13.65,24.0,48.0,96.0,192.0,384.0,768.0,1536.0,
-    3072.0,6144.0,0.0
-};
 /* get fields (big-endian) ---------------------------------------------------*/
 #define U1(p) (*((unsigned char *)(p)))
 #define I1(p) (*((signed char *)(p)))
diff --git a/src/rcv/comnav.c b/src/rcv/comnav.c
index cb2f06cbe60a95c699b174c4c471a6598d733bde..a3f39524e5a7eabbf2bb31d42ec38eb9f1c7731d 100644
--- a/src/rcv/comnav.c
+++ b/src/rcv/comnav.c
@@ -61,14 +61,6 @@ static int exsign(unsigned int v, int bits)
 {
     return (int)(v&(1<<(bits-1))?v|(~0u<<bits):v);
 }
-/* checksum ------------------------------------------------------------------*/
-static unsigned char chksum(const unsigned char *buff, int len)
-{
-    unsigned char sum=0;
-    int i;
-    for (i=0;i<len;i++) sum^=buff[i];
-    return sum;
-}
 /* adjust weekly rollover of gps time ----------------------------------------*/
 static gtime_t adjweek(gtime_t time, double tow)
 {
diff --git a/src/rcv/novatel.c b/src/rcv/novatel.c
index 998e3accb7b6831d4dfe1f4d1ccf14dfeed9ee93..8dc2027404132c438479e82248687f278d9e38bb 100644
--- a/src/rcv/novatel.c
+++ b/src/rcv/novatel.c
@@ -107,14 +107,6 @@ static int exsign(unsigned int v, int bits)
 {
     return (int)(v&(1<<(bits-1))?v|(~0u<<bits):v);
 }
-/* checksum ------------------------------------------------------------------*/
-static unsigned char chksum(const unsigned char *buff, int len)
-{
-    unsigned char sum=0;
-    int i;
-    for (i=0;i<len;i++) sum^=buff[i];
-    return sum;
-}
 /* adjust weekly rollover of gps time ----------------------------------------*/
 static gtime_t adjweek(gtime_t time, double tow)
 {
diff --git a/src/rcv/nvs.c b/src/rcv/nvs.c
index eb0f9d1a8d5fc0f0b78e0cf1a3e8b510f12d1492..f1650f8979fb70b0825a61f40bc43a0ccda0a7db 100644
--- a/src/rcv/nvs.c
+++ b/src/rcv/nvs.c
@@ -550,7 +550,7 @@ extern int input_nvsf(raw_t *raw, FILE *fp)
 extern int gen_nvs(const char *msg, unsigned char *buff)
 {
     unsigned char *q=buff;
-    char mbuff[1024],*args[32],*p;
+    char mbuff[1024],*args[32]={0},*p;
     unsigned int byte;
     int iRate,n,narg=0;
     unsigned char ui100Ms;
diff --git a/src/rcv/skytraq.c b/src/rcv/skytraq.c
index 4b9a5e1f12d8fa14662d378c5114b2e628bbcb9c..beb3e1e3bae25f348ac0f265d4bb1662af3a72bf 100644
--- a/src/rcv/skytraq.c
+++ b/src/rcv/skytraq.c
@@ -762,7 +762,7 @@ extern int gen_stq(const char *msg, unsigned char *buff)
 {
     const char *hz[]={"1Hz","2Hz","4Hz","5Hz","10Hz","20Hz",""};
     unsigned char *q=buff;
-    char mbuff[1024],*args[32],*p;
+    char mbuff[1024],*args[32]={0},*p;
     int i,n,narg=0;
     
     trace(4,"gen_stq: msg=%s\n",msg);
diff --git a/src/rcv/swiftnav.c b/src/rcv/swiftnav.c
index 09e094ec2c10eb62b101ab1b2d7db882225e3474..c8901dd8b788b0c46aa33f98458dde3738c52549 100644
--- a/src/rcv/swiftnav.c
+++ b/src/rcv/swiftnav.c
@@ -15,8 +15,6 @@
 #include <math.h>
 #include <stdint.h>
 
-static const char rcsid[] = "$Id: Swiftnav SBP,v 1.0 2017/02/01 FT $";
-
 #define SBP_SYNC1 0x55 /* SBP message header sync */
 
 #define ID_MEASEPOCH 0x004A      /* observation */
@@ -192,11 +190,6 @@ static const uint32_t rtcm_phase_lock_table[16] = {
     0,    32,   64,    128,   256,   512,    1024,   2048,
     4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288};
 
-static const double ura_eph[] = {/* ura values */
-                                 2.4,    3.4,    4.85,   6.85,  9.65,  13.65,
-                                 24.0,   48.0,   96.0,   192.0, 384.0, 768.0,
-                                 1536.0, 3072.0, 6144.0, 0.0};
-
 static const uint8_t decoding_table[256] = {
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
diff --git a/src/rtcm3e.c b/src/rtcm3e.c
index 1298a86df8082cfc98f76c26bd362af226689ada..d39505db9b586fc3c4375df507ff29f7d1dbead6 100644
--- a/src/rtcm3e.c
+++ b/src/rtcm3e.c
@@ -279,7 +279,7 @@ static void gen_obs_glo(rtcm_t *rtcm, const obsd_t *data, int fcn, int *code1,
                         double tadj)
 {
     double lam1=0.0,lam2=0.0,pr1c=0.0,ppr;
-    double P0,L0,P1,L1,freq1,freq2;
+    double P0,L0,P1,L1,freq1=0,freq2=0;
     int lt1,lt2;
     
     if (fcn>=0) {
diff --git a/src/rtkpos.c b/src/rtkpos.c
index f1e8f2ca418a1d17049fde133c64a5a353bf476d..0f44cf9c1e99af8b05a0a1a4a852db36d95328a2 100644
--- a/src/rtkpos.c
+++ b/src/rtkpos.c
@@ -1803,7 +1803,7 @@ static int resamb_LAMBDA(rtk_t *rtk, double *bias, double *xa,int gps,int glo,in
 /* resolve integer ambiguity by LAMBDA using partial fix techniques and multiple attempts -----------------------*/
 static int manage_amb_LAMBDA(rtk_t *rtk, double *bias, double *xa, const int *sat, int nf, int ns) 
 {
-    int i,f,lockc[NFREQ],ar=0,excflag=0,arsats[MAXOBS];
+    int i,f,lockc[NFREQ],ar=0,excflag=0,arsats[MAXOBS]={0};
     int gps1=-1,glo1=-1,gps2,glo2,nb,rerun,dly;
     float ratio1;
 
@@ -2184,8 +2184,9 @@ static int relpos(rtk_t *rtk, const obsd_t *obs, int nu, int nr,
     }
     for (i=0;i<n;i++) for (j=0;j<nf;j++) {
         if (obs[i].L[j]==0.0) continue;
-        rtk->ssat[obs[i].sat-1].pt[obs[i].rcv-1][j]=obs[i].time;
-        rtk->ssat[obs[i].sat-1].ph[obs[i].rcv-1][j]=obs[i].L[j];
+        nf=opt->ionoopt==IONOOPT_IFLC?1:opt->nf;  /* fixes gcc compiler warnings */
+        rtk->ssat[obs[i].sat-1].pt[obs[i].rcv-1][j<nf?j:nf]=obs[i].time;
+        rtk->ssat[obs[i].sat-1].ph[obs[i].rcv-1][j<nf?j:nf]=obs[i].L[j];
     }
     for (i=0;i<MAXSAT;i++) for (j=0;j<nf;j++) {
         /* Don't lose track of which sats were used to try and resolve the ambiguities */
diff --git a/src/solution.c b/src/solution.c
index 8acf8009bef433bc46000ca670871ee8ecd3707d..bfee40fdf5e42376db5dc18337afb85b6bdaad84 100644
--- a/src/solution.c
+++ b/src/solution.c
@@ -298,7 +298,7 @@ static int test_solstat(const char *buff)
 /* decode nmea ---------------------------------------------------------------*/
 static int decode_nmea(char *buff, sol_t *sol)
 {
-    char *p,*q,*val[MAXFIELD];
+    char *p,*q,*val[MAXFIELD]={0};
     int n=0;
     
     trace(4,"decode_nmea: buff=%s\n",buff);
@@ -1634,7 +1634,7 @@ extern int outsols(unsigned char *buff, const sol_t *sol, const double *rb,
     double gpst;
     int week,timeu;
     const char *sep=opt2sep(opt);
-    char s[64];
+    char s[256];
     unsigned char *p=buff;
     
     trace(3,"outsols :\n");