diff --git a/src/ephemeris.c b/src/ephemeris.c
index 9b1fa034ed57ed78ace7d4d39dd3aad7c43a8aff..6a25ae9038e5e0846d2774857b4a83bac5fab1a6 100644
--- a/src/ephemeris.c
+++ b/src/ephemeris.c
@@ -813,6 +813,9 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
         trace(4,"%s sat=%2d rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f svh=%02X\n",
               time_str(time[i],6),obs[i].sat,rs[i*6],rs[1+i*6],rs[2+i*6],
               dts[i*2]*1E9,var[i],svh[i]);
+        //printf("%s sat=%2d rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f svh=%02X\n",
+        //      time_str(time[i],6),obs[i].sat,rs[i*6],rs[1+i*6],rs[2+i*6],
+        //      dts[i*2]*1E9,var[i],svh[i]);
     }
 }
 /* select satellite ephemeris --------------------------------------------------
diff --git a/src/pntpos.c b/src/pntpos.c
index 5db921749dca3accf3e440385873190e72afe0b4..ddaf284c4d16c1812e28a87c2af21299c23760ad 100644
--- a/src/pntpos.c
+++ b/src/pntpos.c
@@ -245,9 +245,13 @@ static int rescode(int iter, const obsd_t *obs, int n, const double *rs,
     
     ecef2pos(rr,pos);
     
+    //printf("////////// rescode iter=%i\n",iter);
+
     for (i=*ns=0;i<n&&i<MAXOBS;i++) {
         vsat[i]=0; azel[i*2]=azel[1+i*2]=resp[i]=0.0;
         
+        //printf("\tsat %3d - ", obs[i].sat);
+
         if (!(sys=satsys(obs[i].sat,NULL)))
             continue;
         
@@ -261,20 +265,31 @@ static int rescode(int iter, const obsd_t *obs, int n, const double *rs,
         /* geometric distance/azimuth/elevation angle */
         if ((r=geodist(rs+i*6,rr,e))<=0.0||
             satazel(pos,e,azel+i*2)<opt->elmin)
+        {
+            //printf("discarding because of distance r = %f / elevation = %f\n", r, satazel(pos,e,azel+i*2)*R2D);
             continue;
-        
+        }
         /* psudorange with code bias correction */
         if ((P=prange(obs+i,nav,azel+i*2,iter,opt,&vmeas))==0.0)
+        {
+            //printf("discarding because of null prange\n");
             continue;
+        }
         
         /* excluded satellite? */
         if (satexclude(obs[i].sat,vare[i],svh[i],opt))
+        {
+            //printf("excluded\n");
             continue;
+        }
         
         /* ionospheric corrections */
         if (!ionocorr(obs[i].time,nav,obs[i].sat,pos,azel+i*2,
                       iter>0?opt->ionoopt:IONOOPT_BRDC,&dion,&vion))
+        {
+            //printf("discarding because error in iono corr\n");
             continue;
+        }
         
         /* GPS-L1 -> L1/B1 */
         if ((lam_L1=nav->lam[obs[i].sat-1][0])>0.0) {
@@ -283,8 +298,12 @@ static int rescode(int iter, const obsd_t *obs, int n, const double *rs,
         /* tropospheric corrections */
         if (!tropcorr(obs[i].time,nav,pos,azel+i*2,
                       iter>0?opt->tropopt:TROPOPT_SAAS,&dtrp,&vtrp))
+        {
+            //printf("discarding because error in tropo corr\n");
             continue;
+        }
 
+        //printf(" OK!\n");
         /* pseudorange residual */
         v[nv]=P-(r+dtr-CLIGHT*dts[i*2]+dion+dtrp);
         
diff --git a/src/rtkcmn.c b/src/rtkcmn.c
index e47627ffd7d4d9c0e9f7d21efbced097b7b31d5b..4e2f7ba7ade0b8355e13d68a725501cefd84820f 100644
--- a/src/rtkcmn.c
+++ b/src/rtkcmn.c
@@ -537,31 +537,31 @@ extern int satexclude(int sat, double var, int svh, const prcopt_t *opt)
     
     if (svh<0)
     {
-        //printf("excluding sat: svh < 0 (eph unavailable)\n");
+        //printf("svh < 0 (eph unavailable) ");
         return 1; /* ephemeris unavailable */
     }
     
     if (opt) {
         if (opt->exsats[sat-1]==1)
         {
-            //printf("excluding sat: in exsats\n");
+            //printf("in exsats list! ");
             return 1; /* excluded satellite */
         }
         if (opt->exsats[sat-1]==2) return 0; /* included satellite */
         if (!(sys&opt->navsys))
         {
-            //printf("excluding sat: constellation not used\n");
+            //printf("constellation not used! ");
             return 1; /* unselected sat sys */
         }
     }
     if (sys==SYS_QZS) svh&=0xFE; /* mask QZSS LEX health */
     if (svh) {
-        //printf("excluding sat: unhealthy satellite\n");
+        //printf("unhealthy satellite! ");
         trace(3,"unhealthy satellite: sat=%3d svh=%02X\n",sat,svh);
         return 1;
     }
     if (var>MAX_VAR_EPH) {
-        //printf("excluding sat: invalid ura satellite\n");
+        //printf("invalid ura satellite! ");
         trace(3,"invalid ura satellite: sat=%3d ura=%.2f\n",sat,sqrt(var));
         return 1;
     }
diff --git a/src/sbas.c b/src/sbas.c
index 765432acbac174cc8a485edca8d6dd2d008fe6cd..fbc7cc42fbc0fe18fab064188bddc66e1cfbab08 100644
--- a/src/sbas.c
+++ b/src/sbas.c
@@ -126,9 +126,9 @@ static double degfcorr(int ai)
 /* print sbsfcorr_t (JV) -------------------------------------------------------*/
 static void print_sbsfcorr(const sbsfcorr_t *sbsfcorr)
 {
-    printf("iodf: %d, udre: %d, [%f, %f, %f, %d]\n",
+    printf("iodf: %3d, udre: %2d, [%f, %f, %f, %d]\n",
            sbsfcorr->iodf,
-           sbsfcorr->udre,
+           sbsfcorr->udre-1,//udre = UDRE+1
            sbsfcorr->prc,
            sbsfcorr->rrc,
            sbsfcorr->dt,
@@ -137,7 +137,7 @@ static void print_sbsfcorr(const sbsfcorr_t *sbsfcorr)
 /* print sbslcorr_t (JV) -------------------------------------------------------*/
 static void print_sbslcorr(const sbslcorr_t *sbslcorr)
 {
-    printf("iode: %d, dpos=[%f, %f, %f], dvel=[%f, %f, %f], daf=[%f, %f]\n",
+    printf("iode: %3d,           [%f, %f, %f | %f, %f, %f | %f, %f]\n",
            sbslcorr->iode,
            sbslcorr->dpos[0],sbslcorr->dpos[1],sbslcorr->dpos[2],
            sbslcorr->dvel[0],sbslcorr->dvel[1],sbslcorr->dvel[2],
@@ -146,12 +146,12 @@ static void print_sbslcorr(const sbslcorr_t *sbslcorr)
 /* print sbssatp_t (JV) -------------------------------------------------------*/
 static void print_sbssatp(const sbssatp_t *sbssatp)
 {
-    printf("\tsat: %d\n", sbssatp->sat); /* satellite number */
-    printf("\t\tfcorr:\t");
+    printf("  sat %3d:", sbssatp->sat); /* satellite number */
+    printf("  fcorr:  ");
     print_sbsfcorr(&sbssatp->fcorr);/* fast correction */
     if (sbssatp->lcorr.iode > 0)
     {
-        printf("\t\tlcorr:\t");
+        printf("            lcorr:  ");
         print_sbslcorr(&sbssatp->lcorr);/* long term correction */
     }
 }
@@ -171,10 +171,10 @@ static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
     int i,i_new,i_old,new_n,n,sat;
     sbssatp_t sbssat_zero = { 0 };
     sbssat_zero.lcorr.iode = -1;
-    sbssat_zero.fcorr.udre = 15;
+    sbssat_zero.fcorr.udre = 15; // udre=UDRE+1: udre=15->UDRE=14 (not monitored)
     
     trace(4,"decode_sbstype1:\n");
-    //printf("\tdecode_sbstype1: \n");
+    //printf("  decode_sbstype1: \n");
     
     // old_sat to store old data (to be used if changing IODP, prn mask)
     sbssatp_t old_sat[MAXSAT];
@@ -185,12 +185,12 @@ static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
     {
         for (i=0; i<MAXSAT;i++)
         {
-            // store
+            // store old
             old_sat[i] = sbssat->sat[i];
-            //printf("old_sat[%d].sat = %d\n", i, old_sat[i].sat);
-            // remove
+            printf("old_sat[%d].sat = %d\n", i, old_sat[i].sat);
+            // remove current
             sbssat->sat[i] = sbssat_zero;
-            // initialize
+            // initialize new
             new_sat[i] = sbssat_zero;
         }
     }
@@ -207,8 +207,8 @@ static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
            else             sat=0;                   /* 203-   : reserved */
            new_sat[new_n++].sat=sat;
            //sbssat->sat[n++].sat=sat;
-           //printf("\t\tsat: %d\n",sat);
-           //printf("new_sat[%d].sat = %d\n", new_n-1, new_sat[new_n-1].sat);
+           //printf("    sat: %d\n",sat);
+           printf("new_sat[%d].sat = %d\n", new_n-1, new_sat[new_n-1].sat);
         }
     }
 
@@ -264,14 +264,14 @@ static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
                     i_old++;
                 }
             }
-            //printf("sat[%d].sat = %d\n", n-1, sbssat->sat[n-1].sat);
+            printf("sat[%d].sat = %d\n", n-1, sbssat->sat[n-1].sat);
         }
     //}
     sbssat->iodp=getbitu(msg->msg,224,2);
     sbssat->nsat=n;
 
     trace(5,"decode_sbstype1: nprn=%d iodp=%d\n",n,sbssat->iodp);
-    //printf("\tdecode_sbstype1: %d sats, iodp=%d\n",n,sbssat->iodp);
+    //printf("  decode_sbstype1: %d sats, iodp=%d\n",n,sbssat->iodp);
     return 1;
 }
 /* decode type 2-5,0: fast corrections ---------------------------------------*/
@@ -290,7 +290,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);
+    //printf("  decode_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;
@@ -310,7 +310,7 @@ 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);
+        //printf("    sat %d\n",sbssat->sat[j].sat);
     }
     trace(5,"decode_sbstype2: type=%d iodf=%d\n",type,iodf);
     return 1;
@@ -331,7 +331,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("\tdecode_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]);
     return 1;
 }
 /* decode type 7: fast correction degradation factor -------------------------*/
@@ -434,7 +434,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 n=%d iode=%d\n",sbssat->sat[n-1].sat,n,sbssat->sat[n-1].lcorr.iode);
+    printf("  decode_longcorr0: sat=%d n=%d iode=%d\n",sbssat->sat[n-1].sat,n,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;
@@ -457,7 +457,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 n=%d iode=%d\n",sbssat->sat[n-1].sat,n,sbssat->sat[n-1].lcorr.iode);
+    printf("  decode_longcorr1: sat=%d n=%d iode=%d\n",sbssat->sat[n-1].sat,n,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;
@@ -512,7 +512,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("\tdecode_sbstype24: sat=%2d fcorr.iodf=%2d\n",sbssat->sat[j].sat,iodf);
+        //printf("  decode_sbstype24: sat=%2d fcorr.iodf=%2d\n",sbssat->sat[j].sat,iodf);
     }
     return decode_longcorrh(msg,120,sbssat);
 }
@@ -567,7 +567,7 @@ extern int sbsupdatecorr(const sbsmsg_t *msg, nav_t *nav)
     
     if (msg->week==0) return -1;
     
-    printf("============== sbsupdatecorr: PROCESSING type=%d...\n",type);
+    printf("============== sbsupdatecorr: PROCESSING PRN %3d type=%d...\n",msg->prn, type);
     print_sbassat(&nav->sbssat);
 
     switch (type) {
@@ -964,8 +964,8 @@ static int sbsfastcorr(gtime_t time, int sat, const sbssat_t *sbssat,
         if (p->fcorr.t0.time==0) break;
         t=timediff(time,p->fcorr.t0)+sbssat->tlat;
         
-        /* expire age of correction or UDRE==14 (not monitored) */
-        if (fabs(t)>MAXSBSAGEF||p->fcorr.udre>=14/*JV 15*/) continue;
+        /* expire age of correction or UDRE==14 (not monitored) (udre=UDRE+1) */
+        if (fabs(t)>MAXSBSAGEF||p->fcorr.udre>=15) continue;
         *prc=p->fcorr.prc;
 #ifdef RRCENA
         if (p->fcorr.ai>0&&fabs(t)<=8.0*p->fcorr.dt) {