look at the image on top of page 2: http://w8bh.net/avr/clock2.pdf
the leading edge of the yellow pulse is the start of a second. opinions vary widely among the arrogant argumentative sort, as demonstrated here: Why do GPS receivers have a 1 PPS output? - Electrical Engineering Stack Exchange
but 20 nanoseconds accuracy should be well out of the argumentative range
the critical thing to note is that the blue data burst comes AFTER the PPS pulse.
You are not at “at the tone the time will be.” you are at “at the pulse the time was”
so, as W8BH noted, you need to set the time to ( GPS time +1 ) when the PPS pulse leading edge hits, via an interrupt
the next GPS pulse will just set ou back to “unknown fraction of a second behind” This is discussed at the Time library github
you can try syncing the RTC to GPS PPS and setting syncProvider(RTC);
or you can study GPS disciplined NTP. NTP has a mechanism which syncs the clock to atomic clock time within microseconds
I am revising my W8BH clock to be an NTP server, and working on an RPi 3 NTP server in parallel, but the parts are taking way too long to come in.