diff -crB gpsd-2.38/libgpsd_core.c gpsd-2.38-RME/libgpsd_core.c
*** gpsd-2.38/libgpsd_core.c	2009-02-09 18:19:07.000000000 -0500
--- gpsd-2.38-RME/libgpsd_core.c	2009-03-11 21:12:08.000000000 -0400
***************
*** 166,172 ****
  	}
  
  	/*@ +boolint @*/
! 	if ( session->context->fixcnt > 3 ) {
  	    /* Garmin doc says PPS is valid after four good fixes. */
  	    /*
  	     * The PPS pulse is normally a short pulse with a frequency of
--- 166,173 ----
  	}
  
  	/*@ +boolint @*/
! 	if ( (session->gpsdata.fix.time + 10) > timestamp() &&  /* RME PPSBOARD HACK 11-MAR-2009 */
! 	     session->context->fixcnt > 3 ) {
  	    /* Garmin doc says PPS is valid after four good fixes. */
  	    /*
  	     * The PPS pulse is normally a short pulse with a frequency of
diff -crB gpsd-2.38/nmea_parse.c gpsd-2.38-RME/nmea_parse.c
*** gpsd-2.38/nmea_parse.c	2009-01-21 12:10:33.000000000 -0500
--- gpsd-2.38-RME/nmea_parse.c	2009-03-11 20:13:21.000000000 -0400
***************
*** 153,158 ****
--- 153,175 ----
  	if (count > 9) {
  	    merge_hhmmss(field[1], session);
  	    merge_ddmmyy(field[9], session);
+ 
+ 	    /* RME PPSBOARD HACK 10-MAR-2009 */
+ 	    /*============================================*/
+ 	    static int found_ppsboard = 0;
+ 	    if (session->driver.nmea.date.tm_year == 100)
+ 	      found_ppsboard = 1;
+ 
+ 	    if (found_ppsboard) {
+ 	      struct tm tm;
+ 	      time_t unixtime = time(NULL);
+ 	      gmtime_r(&unixtime, &tm);
+ 	      session->driver.nmea.date.tm_year = tm.tm_year;
+ 	      session->driver.nmea.date.tm_mon  = tm.tm_mon;
+ 	      session->driver.nmea.date.tm_mday = tm.tm_mday;
+ 	     }
+ 	    /*============================================*/
+ 
  	    mask |= TIME_SET;
  	    session->gpsdata.fix.time = (double)mkgmtime(&session->driver.nmea.date)+session->driver.nmea.subseconds;
  	    if (!GPS_TIME_EQUAL(session->gpsdata.sentence_time, session->gpsdata.fix.time)) {
