diff --git a/src/ATC/ATC.hxx b/src/ATC/ATC.hxx
index 417058eda..777ccdbd8 100644
--- a/src/ATC/ATC.hxx
+++ b/src/ATC/ATC.hxx
@@ -24,10 +24,12 @@
 
 #include <simgear/compiler.h>
 
-#include <iostream>
-#include <string>
+#include STL_IOSTREAM
+#include STL_STRING
 
+#ifndef SG_HAVE_NATIVE_SGI_COMPILERS
 SG_USING_STD(ostream);
+#endif
 SG_USING_STD(string);
 
 // Possible types of ATC type that the radios may be tuned to.
diff --git a/src/ATC/approach.cxx b/src/ATC/approach.cxx
index 4423894f7..dee810903 100644
--- a/src/ATC/approach.cxx
+++ b/src/ATC/approach.cxx
@@ -346,8 +346,9 @@ void FGApproach::calc_hd_course_dist(const double &h1, const double &d1,
 int FGApproach::RemovePlane() {
 
   // first check if anything has to be done
+  int i;
   bool rmplane = false;
-  for (int i=0; i<num_planes; i++) {
+  for (i=0; i<num_planes; i++) {
     if (planes[i].dist > range*SG_NM_TO_METER) {
       rmplane = true;
       break;
@@ -357,13 +358,13 @@ int FGApproach::RemovePlane() {
 
   // now make a copy of the plane list
   PlaneApp tmp[max_planes];
-  for (int i=0; i<num_planes; i++) {
+  for (i=0; i<num_planes; i++) {
     tmp[i] = planes[i];
   }
   
   int np = 0;
   // now check which planes are still in range
-  for (int i=0; i<num_planes; i++) {
+  for (i=0; i<num_planes; i++) {
     if (tmp[i].dist <= range*SG_NM_TO_METER) {
       planes[np] = tmp[i];
       np += 1;
diff --git a/src/ATC/tower.hxx b/src/ATC/tower.hxx
index 58ba4d389..f4941ce70 100644
--- a/src/ATC/tower.hxx
+++ b/src/ATC/tower.hxx
@@ -27,11 +27,13 @@
 #include <simgear/math/sg_geodesy.hxx>
 #include <plib/sg.h>
 
-#include <iostream>
-#include <string>
+#include STL_IOSTREAM
+#include STL_STRING
 
 SG_USING_STD(string);
+#ifndef SG_HAVE_NATIVE_SGI_COMPILERS
 SG_USING_STD(ios);
+#endif
 
 #include "ATC.hxx"