diff --git a/src/ephemeris.c b/src/ephemeris.c
index 685dce0a11518d1cffc6991047c283a9731d09fd..404d6d133a68cded0e042d62e0abf7d3a0fdc51c 100644
--- a/src/ephemeris.c
+++ b/src/ephemeris.c
@@ -415,7 +415,11 @@ static eph_t *seleph(gtime_t time, int sat, int iode, const nav_t *nav)
     
     for (i=0;i<nav->n;i++) {
         if (nav->eph[i].sat!=sat) continue;
-        if (iode>=0&&nav->eph[i].iode!=iode) continue;
+        if (iode>=0&&nav->eph[i].iode!=iode){
+            printf("seleph: existent eph of sat =%2d but different iode=%3d (searching %3d)\n",
+                  sat,nav->eph[i].iode, iode);
+            continue;
+        }
         if (sys==SYS_GAL&&sel) {
             if (sel==1&&!(nav->eph[i].code&(1<<9))) continue; /* I/NAV */
             if (sel==2&&!(nav->eph[i].code&(1<<8))) continue; /* F/NAV */
@@ -427,8 +431,8 @@ static eph_t *seleph(gtime_t time, int sat, int iode, const nav_t *nav)
     if (iode>=0||j<0) {
         trace(3,"no broadcast ephemeris: %s sat=%2d iode=%3d\n",time_str(time,0),
               sat,iode);
-        printf("seleph: no broadcast ephemeris: %s sat=%2d iode=%3d\n",time_str(time,0),
-              sat,iode);
+        if (iode >= 0)
+            printf("seleph: no broadcast ephemeris: %s sat=%2d iode=%3d\n",time_str(time,0),sat,iode);
         return NULL;
     }
     return nav->eph+j;
@@ -569,7 +573,10 @@ static int satpos_sbas(gtime_t time, gtime_t teph, int sat, const nav_t *nav,
         if (ephpos(time,teph,sat,nav,-1,rs,dts,var,svh))
             *svh=-2;// JV: error code for detecting available ephemeris without sbas correction
         else
-            printf("satpos_sbas: no broadcast eph for sat %2d\n",sat);
+        {
+            *svh=-1;
+        //    printf("satpos_sbas: no broadcast eph for sat %2d\n",sat);
+        }
         return 0;
     }
     /* satellite postion and clock by broadcast ephemeris */
@@ -751,7 +758,8 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
     int i,j;
 
     trace(3,"satposs : teph=%s n=%d ephopt=%d\n",time_str(teph,3),n,ephopt);
-    printf("====satposs : teph=%s n=%d ephopt=%d\n",time_str(teph,3),n,ephopt);
+    if (ephopt==2)
+        printf("====satposs : teph=%s n=%d ephopt=%d\n",time_str(teph,3),n,ephopt);
     
     for (i=0;i<n&&i<2*MAXOBS;i++) {
         for (j=0;j<6;j++) rs [j+i*6]=0.0;
diff --git a/src/rcv/ublox.c b/src/rcv/ublox.c
index b524fb9bff5686a4944e6727a3c5168f72c777fa..2b665858d4696fe501c87310d8728d72b65d27d3 100644
--- a/src/rcv/ublox.c
+++ b/src/rcv/ublox.c
@@ -262,7 +262,7 @@ static int decode_rxmraw(raw_t *raw)
     char *q;
     
     trace(4,"decode_rxmraw: len=%d\n",raw->len);
-    //printf("decode_rxmraw: len=%d\n",raw->len);
+    //printf("\tdecode_rxmraw: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX RXM-RAW   (%4d): nsat=%d",raw->len,U1(p+6));
@@ -340,7 +340,7 @@ static int decode_rxmrawx(raw_t *raw)
     int week,nmeas,ver,gnss,svid,sigid,frqid,lockt,cn0,cpstd,prstd,tstat;
 
     trace(4,"decode_rxmrawx: len=%d\n",raw->len);
-    //printf("decode_rxmrawx: len=%d\n",raw->len);
+    //printf("\tdecode_rxmrawx: len=%d\n",raw->len);
     
     if (raw->len<24) {
         trace(2,"ubx rxmrawx length error: len=%d\n",raw->len);
@@ -523,7 +523,7 @@ static int decode_ephem(int sat, raw_t *raw)
     eph.sat=sat;
     raw->nav.eph[sat-1]=eph;
     raw->ephsat=sat;
-    printf("decode_ephem eph.iode = %d\n", eph.iode);
+    printf("\tdecode_ephem eph.iode = %d\n", eph.iode);
     return 2;
 }
 /* decode almanac and ion/utc ------------------------------------------------*/
@@ -570,7 +570,7 @@ static int decode_rxmsfrb(raw_t *raw)
     unsigned char *p=raw->buff+6;
 
     trace(4,"decode_rxmsfrb: len=%d\n",raw->len);
-    //printf("decode_rxmsfrb: len=%d\n",raw->len);
+    //printf("\tdecode_rxmsfrb: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX RXM-SFRB  (%4d): prn=%2d",raw->len,U1(p+1));
@@ -606,7 +606,7 @@ static int decode_navsol(raw_t *raw)
     unsigned char *p=raw->buff+6;
 
     trace(4,"decode_navsol: len=%d\n",raw->len);
-    //printf("decode_navsol: len=%d\n",raw->len);
+    //printf("\tdecode_navsol: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX NAV-SOL   (%4d):",raw->len);
@@ -626,7 +626,7 @@ static int decode_navtime(raw_t *raw)
     unsigned char *p=raw->buff+6;
 
     trace(4,"decode_navtime: len=%d\n",raw->len);
-    //printf("decode_navtime: len=%d\n",raw->len);
+    //printf("\tdecode_navtime: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX NAV-TIME  (%4d):",raw->len);
@@ -654,7 +654,7 @@ static int decode_trkmeas(raw_t *raw)
     const char P_adj_fw3[]={11,13,13,14,14,13,12,10, 8, 6, 5, 5, 5, 7, 0};  /* fw 3.01 */
 
     trace(4,"decode_trkmeas: len=%d\n",raw->len);
-    //printf("decode_trkmeas: len=%d\n",raw->len);
+    //printf("\tdecode_trkmeas: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX TRK-MEAS  (%4d):",raw->len);
@@ -787,7 +787,7 @@ static int decode_trkd5(raw_t *raw)
     unsigned char *p=raw->buff+6;
 
     trace(4,"decode_trkd5: len=%d\n",raw->len);
-    //printf("decode_trkd5: len=%d\n",raw->len);
+    //printf("\tdecode_trkd5: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX TRK-D5    (%4d):",raw->len);
@@ -904,24 +904,24 @@ static int decode_nav(raw_t *raw, int sat, int off)
         //printf("ubx rawsfrbx length error: sat=%d len=%d\n",sat,raw->len);
         return -1;
     }
-    //printf("decode_nav: p   = %hhx\n", *p);
-    //printf("decode_nav: p+1 = %hhx\n", *(p+1));
-    //printf("decode_nav: p+2 = %hhx\n", *(p+2));
-    //printf("decode_nav: p+3 = %hhx\n", *(p+3));
-    //printf("decode_nav: U4(p)      = %lu\n",U4(p));
-    //printf("decode_nav: U4(p)>>24  = %lu\n",U4(p)>>24);
-//    printf("decode_nav: U4(p+4)      = %lu\n",U4(p+4));
-//    printf("decode_nav: U4(p+4)>>24  = %lu\n",U4(p+4)>>24);
-//    printf("decode_nav: U4(p+8)      = %lu\n",U4(p+8));
-//    printf("decode_nav: U4(p+8)>>24  = %lu\n",U4(p+8)>>24);
-//    printf("decode_nav: U4(p+12)     = %lu\n",U4(p+12));
-//    printf("decode_nav: U4(p+12)>>24 = %lu\n",U4(p+12)>>24);
-//    printf("decode_nav: U4(p+16)     = %lu\n",U4(p+16));
-//    printf("decode_nav: U4(p+16)>>24 = %lu\n",U4(p+16)>>24);
-//    printf("decode_nav: U4(p+20)     = %lu\n",U4(p+20));
-//    printf("decode_nav: U4(p+20)>>24 = %lu\n",U4(p+20)>>24);
-//    printf("decode_nav: U4(p+24)     = %lu\n",U4(p+24));
-//    printf("decode_nav: U4(p+24)>>24 = %lu\n",U4(p+24)>>24);
+    //printf("\tdecode_nav: p   = %hhx\n", *p);
+    //printf("\tdecode_nav: p+1 = %hhx\n", *(p+1));
+    //printf("\tdecode_nav: p+2 = %hhx\n", *(p+2));
+    //printf("\tdecode_nav: p+3 = %hhx\n", *(p+3));
+    //printf("\tdecode_nav: U4(p)      = %lu\n",U4(p));
+    //printf("\tdecode_nav: U4(p)>>24  = %lu\n",U4(p)>>24);
+//    printf("\tdecode_nav: U4(p+4)      = %lu\n",U4(p+4));
+//    printf("\tdecode_nav: U4(p+4)>>24  = %lu\n",U4(p+4)>>24);
+//    printf("\tdecode_nav: U4(p+8)      = %lu\n",U4(p+8));
+//    printf("\tdecode_nav: U4(p+8)>>24  = %lu\n",U4(p+8)>>24);
+//    printf("\tdecode_nav: U4(p+12)     = %lu\n",U4(p+12));
+//    printf("\tdecode_nav: U4(p+12)>>24 = %lu\n",U4(p+12)>>24);
+//    printf("\tdecode_nav: U4(p+16)     = %lu\n",U4(p+16));
+//    printf("\tdecode_nav: U4(p+16)>>24 = %lu\n",U4(p+16)>>24);
+//    printf("\tdecode_nav: U4(p+20)     = %lu\n",U4(p+20));
+//    printf("\tdecode_nav: U4(p+20)>>24 = %lu\n",U4(p+20)>>24);
+//    printf("\tdecode_nav: U4(p+24)     = %lu\n",U4(p+24));
+//    printf("\tdecode_nav: U4(p+24)>>24 = %lu\n",U4(p+24)>>24);
     if ((U4(p)>>24)==PREAMB_CNAV) {
         trace(3,"ubx rawsfrbx cnav not supported sat=%d prn=%d\n",sat,
               (U4(p)>>18)&0x3F);
@@ -931,7 +931,7 @@ static int decode_nav(raw_t *raw, int sat, int off)
     for (i=0;i<10;i++,p+=4) words[i]=U4(p)>>6; /* 24 bits without parity */
     
     id=(words[1]>>2)&7;
-    //printf("decode_nav: sat=%2d id=%d len=%d\n",sat,id,raw->len);
+    //printf("\tdecode_nav: sat=%2d id=%d len=%d\n",sat,id,raw->len);
     if (id<1||5<id) {
         trace(2,"ubx rawsfrbx subfrm id error: sat=%2d id=%d len=%d\n",sat,id,
               raw->len);
@@ -949,7 +949,7 @@ static int decode_nav(raw_t *raw, int sat, int off)
 /* decode galileo navigation data --------------------------------------------*/
 static int decode_enav(raw_t *raw, int sat, int off)
 {
-    //printf("decode_enav\n");
+    //printf("\tdecode_enav\n");
     eph_t eph={0};
     unsigned char *p=raw->buff+6+off,buff[32],crc_buff[26]={0};
     int i,j,k,part1,page1,part2,page2,type;
@@ -1022,13 +1022,13 @@ static int decode_enav(raw_t *raw, int sat, int off)
     eph.sat=sat;
     raw->nav.eph[sat-1]=eph;
     raw->ephsat=sat;
-    printf("decode_enav eph.iode = %d\n", eph.iode);
+    printf("\tdecode_enav eph.iode = %d\n", eph.iode);
     return 2;
 }
 /* decode beidou navigation data ---------------------------------------------*/
 static int decode_cnav(raw_t *raw, int sat, int off)
 {
-    //printf("decode_cnav\n");
+    //printf("\tdecode_cnav\n");
     eph_t eph={0};
     unsigned int words[10];
     int i,id,pgn,prn;
@@ -1089,7 +1089,7 @@ static int decode_cnav(raw_t *raw, int sat, int off)
 /* decode glonass navigation data --------------------------------------------*/
 static int decode_gnav(raw_t *raw, int sat, int off, int frq)
 {
-    //printf("decode_gnav\n");
+    //printf("\tdecode_gnav\n");
     geph_t geph={0};
     int i,j,k,m,prn;
     unsigned char *p=raw->buff+6+off,buff[64],*fid;
@@ -1136,13 +1136,13 @@ static int decode_gnav(raw_t *raw, int sat, int off, int frq)
     }
     raw->nav.geph[prn-1]=geph;
     raw->ephsat=sat;
-    printf("decode_gnav geph.iode = %d\n", geph.iode);
+    printf("\tdecode_gnav geph.iode = %d\n", geph.iode);
     return 2;
 }
 /* decode sbas navigation data -----------------------------------------------*/
 static int decode_snav(raw_t *raw, int sat, int off)
 {
-    //printf("decode_snav\n");
+    //printf("\tdecode_snav\n");
     int i,j,k,prn,tow,week;
     unsigned char *p=raw->buff+6+off,buff[64];
     
@@ -1170,7 +1170,7 @@ static int decode_rxmsfrbx(raw_t *raw)
     unsigned char *p=raw->buff+6;
 
     trace(4,"decode_rxmsfrbx: len=%d\n",raw->len);
-    //printf("decode_rxmsfrbx: len=%d\n",raw->len);
+    //printf("\tdecode_rxmsfrbx: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX RXM-SFRBX (%4d): sys=%d prn=%3d",raw->len,
@@ -1184,7 +1184,7 @@ static int decode_rxmsfrbx(raw_t *raw)
     prn=U1(p+1)+(sys==SYS_QZS?192:0);
     if (!(sat=satno(sys,prn))) {
         if (sys==SYS_GLO&&prn==255) {
-            //printf("decode_rxmsfrbx: GLO and prn 255\n",sys,prn);
+            //printf("\tdecode_rxmsfrbx: GLO and prn 255\n",sys,prn);
             return 0; /* suppress error for unknown glo satellite */
         }
         trace(2,"ubx rxmsfrbx sat number error: sys=%d prn=%d\n",sys,prn);
@@ -1208,7 +1208,7 @@ static int decode_trksfrbx(raw_t *raw)
     unsigned char *p=raw->buff+6;
 
     trace(4,"decode_trksfrbx: len=%d\n",raw->len);
-    //printf("decode_trksfrbx: len=%d\n",raw->len);
+    //printf("\tdecode_trksfrbx: len=%d\n",raw->len);
     
     if (raw->outtype) {
         sprintf(raw->msgtype,"UBX TRK-SFRBX (%4d): sys=%d prn=%3d",raw->len,
@@ -1245,7 +1245,7 @@ static int decode_timtm2(raw_t *raw)
     double tr[6],tf[6];
 
     trace(4, "decode_timtm2: len=%d\n", raw->len);
-    //printf("decode_timtm2: len=%d\n", raw->len);
+    //printf("\tdecode_timtm2: len=%d\n", raw->len);
 
     if (raw->outtype) {
         sprintf(raw->msgtype, "UBX TIM-TM2 (%4d)", raw->len);
diff --git a/src/sbas.c b/src/sbas.c
index 5c150101eb862d79c4cdfd302646189e743dd494..2223a3b9770499e9ebaeeffdb620bce3d219941c 100644
--- a/src/sbas.c
+++ b/src/sbas.c
@@ -129,6 +129,7 @@ static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
     int i,n,sat;
     
     trace(4,"decode_sbstype1:\n");
+    //printf("\tdecode_sbstype1: \n");
     
     for (i=1,n=0;i<=210&&n<MAXSAT;i++) {
         if (getbitu(msg->msg,13+i,1)) {
@@ -141,13 +142,14 @@ static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
            else if (i<=202) sat=satno(SYS_QZS,i);    /* 193-202: qzss ref [2] */
            else             sat=0;                   /* 203-   : reserved */
            sbssat->sat[n++].sat=sat;
+           //printf("\t\tsat: %d\n",sat);
         }
     }
     sbssat->iodp=getbitu(msg->msg,224,2);
     sbssat->nsat=n;
 
     trace(5,"decode_sbstype1: nprn=%d iodp=%d\n",n,sbssat->iodp);
-    printf("decode_sbstype1: nprn=%d iodp=%d\n",n,sbssat->iodp);
+    printf("\tdecode_sbstype1: %d sats, iodp=%d\n",n,sbssat->iodp);
     return 1;
 }
 /* decode type 2-5,0: fast corrections ---------------------------------------*/
@@ -163,6 +165,7 @@ static int decode_sbstype2(const sbsmsg_t *msg, sbssat_t *sbssat)
     
     type=getbitu(msg->msg, 8,6);
     iodf=getbitu(msg->msg,14,2);
+    printf("\tdecode_sbstype2: type=%d iodf=%d\n",type,iodf);
     
     for (i=0;i<13;i++) {
         if ((j=13*((type==0?2:type)-2)+i)>=sbssat->nsat) break;
@@ -182,9 +185,9 @@ static int decode_sbstype2(const sbsmsg_t *msg, sbssat_t *sbssat)
             sbssat->sat[j].fcorr.dt=dt;
         }
         sbssat->sat[j].fcorr.iodf=iodf;
+        //printf("\t\tsat %d\n",sbssat->sat[j].sat);
     }
     trace(5,"decode_sbstype2: type=%d iodf=%d\n",type,iodf);
-    printf("decode_sbstype2: type=%d iodf=%d\n",type,iodf);
     return 1;
 }
 /* decode type 6: integrity info ---------------------------------------------*/
@@ -203,7 +206,7 @@ static int decode_sbstype6(const sbsmsg_t *msg, sbssat_t *sbssat)
         sbssat->sat[i].fcorr.udre=udre+1;
     }
     trace(5,"decode_sbstype6: iodf=%d %d %d %d\n",iodf[0],iodf[1],iodf[2],iodf[3]);
-    printf("decode_sbstype6: iodf=%d %d %d %d\n",iodf[0],iodf[1],iodf[2],iodf[3]);
+    printf("\tdecode_sbstype6: iodf=%d %d %d %d\n",iodf[0],iodf[1],iodf[2],iodf[3]);
     return 1;
 }
 /* decode type 7: fast correction degradation factor -------------------------*/
@@ -304,6 +307,7 @@ static int decode_longcorr0(const sbsmsg_t *msg, int p, sbssat_t *sbssat)
     if (n==0||n>MAXSAT) return 0;
     
     sbssat->sat[n-1].lcorr.iode=getbitu(msg->msg,p+6,8);
+    printf("\tdecode_longcorr0: sat=%d iode=%d\n",sbssat->sat[n-1].sat,sbssat->sat[n-1].lcorr.iode);
     
     for (i=0;i<3;i++) {
         sbssat->sat[n-1].lcorr.dpos[i]=getbits(msg->msg,p+14+9*i,9)*0.125;
@@ -326,6 +330,7 @@ static int decode_longcorr1(const sbsmsg_t *msg, int p, sbssat_t *sbssat)
     if (n==0||n>MAXSAT) return 0;
     
     sbssat->sat[n-1].lcorr.iode=getbitu(msg->msg,p+6,8);
+    printf("\tdecode_longcorr1: sat=%d iode=%d\n",sbssat->sat[n-1].sat,sbssat->sat[n-1].lcorr.iode);
     
     for (i=0;i<3;i++) {
         sbssat->sat[n-1].lcorr.dpos[i]=getbits(msg->msg,p+14+i*11,11)*0.125;
@@ -377,7 +382,7 @@ static int decode_sbstype24(const sbsmsg_t *msg, sbssat_t *sbssat)
         sbssat->sat[j].fcorr.prc =getbits(msg->msg,14+i*12,12)*0.125f;
         sbssat->sat[j].fcorr.udre=udre+1;
         sbssat->sat[j].fcorr.iodf=iodf;
-        printf("decode_sbstype24: sat=%2d fcorr.iodf=%2d\n",sbssat->sat[j].sat,iodf);
+        printf("\tdecode_sbstype24: sat=%2d fcorr.iodf=%2d\n",sbssat->sat[j].sat,iodf);
     }
     return decode_longcorrh(msg,120,sbssat);
 }