- // $GPRMC,HHMMSS,A,DDMM.MMM,N,DDDMM.MMM,W,XXX.X,XXX.X,DDMMYY,XXX.X,E*XX
- sprintf( rmc, "GPRMC,%s,A,%s,%s,%s,%s,%s,0.000,E",
- utc, lat, lon, speed, heading, date );
+ char magvar[10];
+ float magdeg = fgGetDouble( "/environment/magnetic-variation-deg" );
+ if ( magdeg < 0.0 ) {
+ magdeg = -magdeg;
+ dir = 'W';
+ } else {
+ dir = 'E';
+ }
+ sprintf( magvar, "%.1f,%c", magdeg, dir );
+
+ // $GPRMC,HHMMSS,A,DDMM.MMMM,N,DDDMM.MMMM,W,XXX.X,XXX.X,DDMMYY,XXX.X,E,A*XX
+ sprintf( rmc, "GPRMC,%s,A,%s,%s,%s,%s,%s,%s,A",
+ utc, rmc_lat, rmc_lon, speed, heading, date, magvar );