diff --git a/src/ephemeris.c b/src/ephemeris.c
index 404d6d133a68cded0e042d62e0abf7d3a0fdc51c..d7e722a09d72be22637d57f78802155f6b2f5f32 100644
--- a/src/ephemeris.c
+++ b/src/ephemeris.c
@@ -759,7 +759,10 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
 
     trace(3,"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);
+        print_sbassat(&nav->sbssat);
+    }
     
     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/rtklib.h b/src/rtklib.h
index d7bf3a162b8b8bf0cff291e6958ec3078380b4c8..e28fdac31028e939f79e108ae3b012d48964a63b 100644
--- a/src/rtklib.h
+++ b/src/rtklib.h
@@ -1821,6 +1821,7 @@ EXPORT int sbsioncorr(gtime_t time, const nav_t *nav, const double *pos,
                       const double *azel, double *delay, double *var);
 EXPORT double sbstropcorr(gtime_t time, const double *pos, const double *azel,
                           double *var);
+EXPORT void print_sbassat(const sbssat_t *sbssat);
 
 /* options functions ---------------------------------------------------------*/
 EXPORT opt_t *searchopt(const char *name, const opt_t *opts);
diff --git a/src/sbas.c b/src/sbas.c
index 2223a3b9770499e9ebaeeffdb620bce3d219941c..812d8ec0f69b3ee6a702af8771b3e50f87a3fad8 100644
--- a/src/sbas.c
+++ b/src/sbas.c
@@ -123,6 +123,45 @@ static double degfcorr(int ai)
     };
     return 0<ai&&ai<=15?degf[ai]:0.0058;
 }
+/* print sbsfcorr_t (JV) -------------------------------------------------------*/
+static void print_sbsfcorr(const sbsfcorr_t *sbsfcorr)
+{
+    printf("\t\tiodf: %d, udre: %d, [%f, %f, %f, %d]\n",
+           sbsfcorr->iodf,
+           sbsfcorr->udre,
+           sbsfcorr->prc,
+           sbsfcorr->rrc,
+           sbsfcorr->dt,
+           sbsfcorr->ai);
+}
+/* print sbslcorr_t (JV) -------------------------------------------------------*/
+static void print_sbslcorr(const sbslcorr_t *sbslcorr)
+{
+    printf("\t\tiode: %d, [[%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],
+           sbslcorr->daf0,sbslcorr->daf1);
+}
+/* print sbssatp_t (JV) -------------------------------------------------------*/
+static void print_sbssatp(const sbssatp_t *sbssatp)
+{
+    printf("\tsat: %d\n", sbssatp->sat); /* satellite number */
+    printf("\tfcorr:\n");
+    print_sbsfcorr(&sbssatp->fcorr);/* fast correction */
+    printf("\tlcorr:\n");
+    print_sbslcorr(&sbssatp->lcorr);/* long term correction */
+}
+/* print sbssat_t (JV) -------------------------------------------------------*/
+extern void print_sbassat(const sbssat_t *sbssat)
+{
+    printf("iodp: %d\n", sbssat->iodp); /* IODP (issue of date mask) */
+    printf("tlat: %d\n", sbssat->tlat); /* system latency (s) */
+    printf("nsat: %d\n", sbssat->nsat); /* number of satellites */
+    printf("sat:\n");
+    for (int i = 0; i < sbssat->nsat; i++)
+        print_sbssatp(&sbssat->sat[i]);
+}
 /* decode type 1: prn masks --------------------------------------------------*/
 static int decode_sbstype1(const sbsmsg_t *msg, sbssat_t *sbssat)
 {