- FGRunway* rwy = (FGRunway*) g;
-
- if (!strcmp(fieldName, "id")) *out = stringToNasal(c, rwy->ident());
- else if (!strcmp(fieldName, "lat")) *out = naNum(rwy->latitude());
- else if (!strcmp(fieldName, "lon")) *out = naNum(rwy->longitude());
- else if (!strcmp(fieldName, "heading")) *out = naNum(rwy->headingDeg());
- else if (!strcmp(fieldName, "length")) *out = naNum(rwy->lengthM());
- else if (!strcmp(fieldName, "width")) *out = naNum(rwy->widthM());
- else if (!strcmp(fieldName, "threshold")) *out = naNum(rwy->displacedThresholdM());
- else if (!strcmp(fieldName, "stopway")) *out = naNum(rwy->stopwayM());
- else if (!strcmp(fieldName, "surface")) *out = naNum(rwy->surface());
- else if (!strcmp(fieldName, "ils_frequency_mhz")) {
- *out = rwy->ILS() ? naNum(rwy->ILS()->get_freq() / 100.0) : naNil();
- } else if (!strcmp(fieldName, "ils")) {
- *out = ghostForNavaid(c, rwy->ILS());
+ FGRunwayBase* base = (FGRunwayBase*) g;
+
+ if (!strcmp(fieldName, "id")) *out = stringToNasal(c, base->ident());
+ else if (!strcmp(fieldName, "lat")) *out = naNum(base->latitude());
+ else if (!strcmp(fieldName, "lon")) *out = naNum(base->longitude());
+ else if (!strcmp(fieldName, "heading")) *out = naNum(base->headingDeg());
+ else if (!strcmp(fieldName, "length")) *out = naNum(base->lengthM());
+ else if (!strcmp(fieldName, "width")) *out = naNum(base->widthM());
+ else if (!strcmp(fieldName, "surface")) *out = naNum(base->surface());
+ else if (base->type() == FGRunwayBase::RUNWAY) {
+ FGRunway* rwy = (FGRunway*) g;
+ if (!strcmp(fieldName, "threshold")) *out = naNum(rwy->displacedThresholdM());
+ else if (!strcmp(fieldName, "stopway")) *out = naNum(rwy->stopwayM());
+ else if (!strcmp(fieldName, "reciprocal")) {
+ *out = ghostForRunway(c, rwy->reciprocalRunway());
+ } else if (!strcmp(fieldName, "ils_frequency_mhz")) {
+ *out = rwy->ILS() ? naNum(rwy->ILS()->get_freq() / 100.0) : naNil();
+ } else if (!strcmp(fieldName, "ils")) {
+ *out = ghostForNavaid(c, rwy->ILS());
+ } else {
+ return 0;
+ }