What on earth is wrong with my stratum 1 servers

I have solved all my problems (well, my ntp problems at least) by moving to chrony and gpsd.

Definitely other folks comments of using GPSD helps, but I cant see why reading NMEA directly with NMEA driver shouldnt have worked. Generally my time with ntp classic and ntpsec has been unproductive.

I did get a ntpsec working with KPPS of around 15usec, but chrony does much better.

Here is my current config and my result:
/etc/chrony/chrony.conf

server tick.meraka.csir.co.za iburst
server tock.meraka.csir.co.za iburst
server time2.facebook.com iburst
initstepslew 10 time2.facebook.com
driftfile /var/lib/chrony/chrony.drift
refclock SHM 0 offset 0.5 delay 0.5 refid GPS
refclock PPS /dev/pps0 lock GPS refid KPPS
rtcsync
keyfile /etc/chrony/chrony.keys
log tracking measurements statistics
logdir /var/log/chrony
makestep 1 3
allow
root@ntp-s1-1:/home/pi# chronyc sources
210 Number of sources = 5
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
#- GPS                           0   4   377    21   -101ms[ -101ms] +/-  252ms
#* KPPS                          0   4   377    21    -22ns[ -736ns] +/-  925ns
^- tick.meraka.csir.co.za        1   7   377     4    -38us[  -38us] +/-   29ms
^- tock.meraka.csir.co.za        1   7   377   194  -1247us[-1247us] +/-   31ms
^- time2.facebook.com            1   8   377   195  -1460us[-1460us] +/- 6342us
root@ntp-s1-1:/home/pi# 

The solution was derived from these sources:
https://github.com/dstumbo/chrony-rpi-gps
https://forums.adafruit.com/viewtopic.php?f=50&t=70133&start=255

Thanks to everyone for all their help and support.

Have a great easter break.

Salaams,

Alex