Index: src/aircraft_cmd.cpp =================================================================== --- src/aircraft_cmd.cpp (revision 17745) +++ src/aircraft_cmd.cpp (working copy) @@ -1117,10 +1117,17 @@ uint z = v->z_pos; if (amd->flag & AMED_TAKEOFF) { - z = min(z + 2, GetAircraftFlyingAltitude(v)); + z = min(z + 3, GetAircraftFlyingAltitude(v)); } - if ((amd->flag & AMED_HOLD) && (z > 150)) z--; + if (amd->flag & AMED_HOLD) { + uint curz = GetSlopeZ(x, y) + 130; // max tile height is 120 and max plane altitude is 255, so we stay below + if (z > curz) { + z--; + } else if (z < curz) { + z++; + } + } if (amd->flag & AMED_LAND) { if (st->airport_tile == INVALID_TILE) {