diff --git a/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java b/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java
index 7a84e885e9468f9b417a16014cb63044acc5fa06..7fa7f73f876a86a5586471f9e242880b83f34d57 100644
--- a/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java
+++ b/rugged-core/src/main/java/org/orekit/rugged/core/dem/SimpleTile.java
@@ -168,11 +168,34 @@ public class SimpleTile implements Tile {
 
     /** {@inheritDoc} */
     @Override
-    public boolean covers(final double latitude, final double longitude) {
+    public Location getLocation(final double latitude, final double longitude) {
         final int latitudeIndex  = (int) FastMath.floor((latitude  - minLatitude)  / latitudeStep);
         final int longitudeIndex = (int) FastMath.floor((longitude - minLongitude) / longitudeStep);
-        return latitudeIndex  >= 0 && latitudeIndex  < latitudeRows &&
-               longitudeIndex >= 0 && longitudeIndex < longitudeColumns;
+        if (longitudeIndex < 0) {
+            if (latitudeIndex < 0) {
+                return Location.SOUTH_WEST;
+            } else if (latitudeIndex <= latitudeRows) {
+                return Location.WEST;
+            } else {
+                return Location.NORTH_WEST;
+            }
+        } else if (longitudeIndex <= longitudeColumns) {
+            if (latitudeIndex < 0) {
+                return Location.SOUTH;
+            } else if (latitudeIndex <= latitudeRows) {
+                return Location.IN_TILE;
+            } else {
+                return Location.NORTH;
+            }
+        } else {
+            if (latitudeIndex < 0) {
+                return Location.SOUTH_EAST;
+            } else if (latitudeIndex <= latitudeRows) {
+                return Location.EAST;
+            } else {
+                return Location.NORTH_EAST;
+            }
+        }
     }
 
     /** Check indices.
diff --git a/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java b/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java
index c72ca7836958d15ff4822e2c5ed6721c68794748..6956d87fcab5cc73fba3ba906e580b1f5aaeab42 100644
--- a/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java
+++ b/rugged-core/src/main/java/org/orekit/rugged/core/dem/Tile.java
@@ -24,6 +24,19 @@ import org.orekit.rugged.api.UpdatableTile;
  */
 public interface Tile extends UpdatableTile {
 
+    /** Enumerate for point location with respect to tile. */
+    enum Location {
+        SOUTH_WEST,
+        WEST,
+        NORTH_WEST,
+        NORTH,
+        NORTH_EAST,
+        EAST,
+        SOUTH_EAST,
+        SOUTH,
+        IN_TILE
+    }
+
     /** Hook called at the end of tile update completion.
      * @exception RuggedException if something wrong occurs
      * (missing data ...)
@@ -82,8 +95,8 @@ public interface Tile extends UpdatableTile {
     /** Check if a tile covers a ground point.
      * @param latitude ground point latitude
      * @param longitude ground point longitude
-     * @return true if the tile covers the ground point
+     * @return location of the ground point with respect to tile
      */
-    boolean covers(double latitude, double longitude);
+    Location getLocation(double latitude, double longitude);
 
 }
diff --git a/rugged-core/src/main/java/org/orekit/rugged/core/dem/TilesCache.java b/rugged-core/src/main/java/org/orekit/rugged/core/dem/TilesCache.java
index 945f16a4896d5e282de77157e46bbf8ac1caa5e4..7ca1ea95c32dfbe1c700ec84d80bae7e9e659585 100644
--- a/rugged-core/src/main/java/org/orekit/rugged/core/dem/TilesCache.java
+++ b/rugged-core/src/main/java/org/orekit/rugged/core/dem/TilesCache.java
@@ -25,6 +25,7 @@ import java.util.List;
 
 import org.orekit.rugged.api.RuggedException;
 import org.orekit.rugged.api.TileUpdater;
+import org.orekit.rugged.core.dem.Tile.Location;
 
 /** Cache for Digital Elevation Model {@link Tile tiles}.
  * <p>
@@ -263,7 +264,7 @@ public class TilesCache<T extends Tile> {
 
                 if (insertionPoint < tiles.size()) {
                     final T tile = tiles.get(insertionPoint).getTile();
-                    if (tile.covers(latitude, longitude)) {
+                    if (tile.getLocation(latitude, longitude) == Location.IN_TILE) {
                         // we have found an existing tile
                         return tile;
                     }
diff --git a/rugged-core/src/test/java/org/orekit/rugged/core/dem/SimpleTileTest.java b/rugged-core/src/test/java/org/orekit/rugged/core/dem/SimpleTileTest.java
index 9523ed79c0be51239783a80b942b7085b7821ec7..a2ce7df9ddef4453f6d14acc06a07c666dc13a96 100644
--- a/rugged-core/src/test/java/org/orekit/rugged/core/dem/SimpleTileTest.java
+++ b/rugged-core/src/test/java/org/orekit/rugged/core/dem/SimpleTileTest.java
@@ -23,6 +23,7 @@ import org.orekit.rugged.api.RuggedMessages;
 import org.orekit.rugged.core.dem.SimpleTile;
 import org.orekit.rugged.core.dem.SimpleTileFactory;
 import org.orekit.rugged.core.dem.Tile;
+import org.orekit.rugged.core.dem.Tile.Location;
 
 public class SimpleTileTest {
 
@@ -76,12 +77,15 @@ public class SimpleTileTest {
         Assert.assertEquals(100, tile.getLatitudeRows());
         Assert.assertEquals(200, tile.getLongitudeColumns());
 
-        Assert.assertTrue(tile.covers(  6.0, 22.0));
-        Assert.assertFalse(tile.covers( 0.0, 22.0));
-        Assert.assertFalse(tile.covers(12.0, 22.0));
-        Assert.assertFalse(tile.covers( 6.0,  1.0));
-        Assert.assertFalse(tile.covers( 6.0, 43.0));
-
+        Assert.assertEquals(Location.SOUTH_WEST, tile.getLocation( 0.0,  1.0));
+        Assert.assertEquals(Location.WEST,       tile.getLocation( 6.0,  1.0));
+        Assert.assertEquals(Location.NORTH_WEST, tile.getLocation(12.0,  1.0));
+        Assert.assertEquals(Location.SOUTH,      tile.getLocation( 0.0, 22.0));
+        Assert.assertEquals(Location.IN_TILE,    tile.getLocation( 6.0, 22.0));
+        Assert.assertEquals(Location.NORTH,      tile.getLocation(12.0, 22.0));
+        Assert.assertEquals(Location.SOUTH_EAST, tile.getLocation( 0.0, 43.0));
+        Assert.assertEquals(Location.EAST,       tile.getLocation( 6.0, 43.0));
+        Assert.assertEquals(Location.NORTH_EAST, tile.getLocation(12.0, 43.0));
         for (int i = 0; i < tile.getLatitudeRows(); ++i) {
             for (int j = 0; j < tile.getLongitudeColumns(); ++j) {
                 Assert.assertEquals(1000 * i + j, tile.getElevationAtIndices(i, j), 1.0e-10);