     /* wait for a new second to start, and capture millis() in start */
     do	{
         now = RTC->TR & (RTC_TR_ST | RTC_TR_SU);
-        start = millis();
+        start = micros();
         } while (second == now);
 
     /* update our second of interest */

    CalibLow = 0;
    CalibHigh = 0;
    mSecondLow = 0;
    mSecondHigh = 2000;
    fHaveSeenLow = fHaveSeenHigh = false;

    /* loop until we have a new value */
    do	{
        /* meassure the # of millis per RTC second */
        mSecond = MeasureMillisPerRtcSecond();

        /* invariant: */
        if (Calib == CalibNew)
            mSecondNew = mSecond;

        /* if mSecond is low, this meaans we must increase the system clock */
        if (mSecond <= 1000)
            {
            Serial.print('-');
            /*

        delay(500);
        }

    Serial.print(" 0x");
    Serial.println(CalibNew, HEX);
    return CalibNew;
    }

uint32_t
MeasureMicrosPerRtcSecond(
    void
    )
    {
