  	case PPS_IOC_KCBIND:
  #ifdef PPS_SYNC
  		kapi = (struct pps_kcbind_args *)data;
-@@ -930,6 +944,12 @@ pps_event(struct pps_state *pps, int eve
+@@ -917,6 +931,9 @@ pps_capture(struct pps_state *pps)
+ 	th = timehands;
+ 	pps->capgen = th->th_generation;
+ 	pps->capth = th;
++#ifdef FFCLOCK
++	pps->capffth = fftimehands;
++#endif
+ 	pps->capcount = th->th_counter->tc_get_timecount(th->th_counter);
+ 	if (pps->capgen != th->th_generation)
+ 		pps->capgen = 0;
+@@ -930,6 +947,12 @@ pps_event(struct pps_state *pps, int eve
  	u_int tcount, *pcount;
  	int foff, fhard;
  	pps_seq_t *pseq;

 	}
 
 	/*
@@ -967,6 +997,9 @@ pps_event(struct pps_state *pps, int eve
 	/* Convert the count to a timespec. */
 	tcount = pps->capcount - pps->capth->th_offset_count;
 	tcount &= pps->capth->th_counter->tc_counter_mask;
+#ifdef FFCLOCK
+	ffcounter_record = pps->capth->ffcounter_record;
+#endif
 	bt = pps->capth->th_offset;
 	bintime_addx(&bt, pps->capth->th_scale * tcount);
 	bintime_add(&bt, &boottimebin);
@@ -979,6 +1012,11 @@ pps_event(struct pps_state *pps, int eve
 	*pcount = pps->capcount;
 	(*pseq)++;
 	*tsp = ts;
+#ifdef FFCLOCK
+	(*ffclock_pseq)++;
+	*ffclock_tsp = ts;
+	*ffcounter = (ffcounter_record + tcount);
+#endif
 
 	if (foff) {
 		timespecadd(tsp, osp);
Index: sys/sys/timepps.h
===================================================================
--- sys.orig/sys/timepps.h	2010-12-22 19:03:01.000000000 +1100
+++ sys/sys/timepps.h	2010-12-22 20:26:46.000000000 +1100
@@ -6,6 +6,12 @@
  * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
  * ----------------------------------------------------------------------------

+	struct timespec *ffclock_tsp;
+	pps_seq_t *ffclock_pseq;
+	ffcounter_t *ffcounter;
+	ffcounter_t ffcounter_mark;
+#endif
 
 	KASSERT(pps != NULL, ("NULL pps pointer in pps_event"));
 	/* If the timecounter was wound up underneath us, bail out. */
@@ -944,6 +967,11 @@ pps_event(struct pps_state *pps, int eve
 		fhard = pps->kcmode & PPS_CAPTUREASSERT;
 		pcount = &pps->ppscount[0];
 		pseq = &pps->ppsinfo.assert_sequence;
