diff --git a/src/main/java/org/orekit/rugged/api/LineDatation.java b/src/main/java/org/orekit/rugged/api/LineDatation.java
index ba032920e110dd5fbb49de6241092d8249c55489..83963f0dbf8800202574fdb116a70f854380cfba 100644
--- a/src/main/java/org/orekit/rugged/api/LineDatation.java
+++ b/src/main/java/org/orekit/rugged/api/LineDatation.java
@@ -16,6 +16,8 @@
  */
 package org.orekit.rugged.api;
 
+import org.orekit.time.AbsoluteDate;
+
 /** Interface representing line datation model.
  * @see LinearLineDatation
  * @author Luc Maisonobe
@@ -24,14 +26,14 @@ public interface LineDatation {
 
     /** Get the date for a given line.
      * @param lineNumber line number
-     * @return date, as an offset in seconds from reference date
+     * @return date at which line is acquired
      */
-    double getDate(double lineNumber);
+    AbsoluteDate getDate(double lineNumber);
 
     /** Get the line for a given date.
-     * @param date date, as an offset in seconds from reference date
+     * @param date date
      * @return line number
      */
-    double getLine(double date);
+    double getLine(AbsoluteDate date);
 
 }
diff --git a/src/main/java/org/orekit/rugged/api/LinearLineDatation.java b/src/main/java/org/orekit/rugged/api/LinearLineDatation.java
index def52ccc56067a50ecb15ec8ccfb593a27d88a90..18f6c4491eaafdc146441940aa089bc54e9cb559 100644
--- a/src/main/java/org/orekit/rugged/api/LinearLineDatation.java
+++ b/src/main/java/org/orekit/rugged/api/LinearLineDatation.java
@@ -16,6 +16,8 @@
  */
 package org.orekit.rugged.api;
 
+import org.orekit.time.AbsoluteDate;
+
 
 /** Linear model for {@link LineDatation line datation}.
  * <p>
@@ -25,31 +27,37 @@ package org.orekit.rugged.api;
  */
 public class LinearLineDatation implements LineDatation {
 
+    /** Reference date. */
+    private final AbsoluteDate referenceDate;
+
     /** Line number at reference date. */
-    private final double line0;
+    private final double referenceLine;
 
     /** Rate of lines scanning (lines / seconds). */
     private final double rate;
 
     /** Simple constructor.
-     * @param line0 line number at reference date
+     * @param referenceDate reference date
+     * @param referenceLine line number at reference date
      * @param rate rate of lines scanning (lines / seconds)
      */
-    public LinearLineDatation(final double line0, final double rate) {
-        this.line0 = line0;
-        this.rate  = rate;
+    public LinearLineDatation(final AbsoluteDate referenceDate, final double referenceLine,
+                              final double rate) {
+        this.referenceDate = referenceDate;
+        this.referenceLine = referenceLine;
+        this.rate          = rate;
     }
 
     /** {@inheritDoc} */
     @Override
-    public double getDate(final double lineNumber) {
-        return (lineNumber - line0) / rate;
+    public AbsoluteDate getDate(final double lineNumber) {
+        return referenceDate.shiftedBy((lineNumber - referenceLine) / rate);
     }
 
     /** {@inheritDoc} */
     @Override
-    public double getLine(final double date) {
-        return line0 + rate * date;
+    public double getLine(final AbsoluteDate date) {
+        return referenceLine + rate * date.durationFrom(referenceDate);
     }
 
 }
diff --git a/src/main/java/org/orekit/rugged/api/Rugged.java b/src/main/java/org/orekit/rugged/api/Rugged.java
index ca1fdbbdc81039cb9c2263aa6de721e8179f2d2f..b39d620b5639f14301c9573939a177b2b451c283 100644
--- a/src/main/java/org/orekit/rugged/api/Rugged.java
+++ b/src/main/java/org/orekit/rugged/api/Rugged.java
@@ -68,9 +68,6 @@ public class Rugged {
     /** Maximum number of evaluations for inverse localization. */
     private static final int INVERSE_LOCALIZATION_MAX_EVAL = 1000;
 
-    /** Reference date. */
-    private final AbsoluteDate referenceDate;
-
     /** Reference ellipsoid. */
     private final ExtendedEllipsoid ellipsoid;
 
@@ -98,7 +95,6 @@ public class Rugged {
      * and {@link #setAberrationOfLightCorrection(boolean) setAberrationOfLightCorrection}
      * can be made after construction if these phenomena should not be corrected.
      * </p>
-     * @param referenceDate reference date from which all other dates are computed
      * @param updater updater used to load Digital Elevation Model tiles
      * @param maxCachedTiles maximum number of tiles stored in the cache
      * @param algorithmID identifier of algorithm to use for Digital Elevation Model intersection
@@ -111,14 +107,13 @@ public class Rugged {
      * @param aInterpolationOrder order to use for attitude interpolation
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
-    public Rugged(final AbsoluteDate referenceDate,
-                  final TileUpdater updater, final int maxCachedTiles,
+    public Rugged(final TileUpdater updater, final int maxCachedTiles,
                   final AlgorithmId algorithmID, final EllipsoidId ellipsoidID,
                   final InertialFrameId inertialFrameID, final BodyRotatingFrameId bodyRotatingFrameID,
                   final List<Pair<AbsoluteDate, PVCoordinates>> positionsVelocities, final int pvInterpolationOrder,
                   final List<Pair<AbsoluteDate, Rotation>> quaternions, final int aInterpolationOrder)
         throws RuggedException {
-        this(referenceDate, updater, maxCachedTiles, algorithmID,
+        this(updater, maxCachedTiles, algorithmID,
              selectEllipsoid(ellipsoidID, selectBodyRotatingFrame(bodyRotatingFrameID)),
              selectInertialFrame(inertialFrameID),
              positionsVelocities, pvInterpolationOrder, quaternions, aInterpolationOrder);
@@ -133,7 +128,6 @@ public class Rugged {
      * and {@link #setAberrationOfLightCorrection(boolean) setAberrationOfLightCorrection}
      * can be made after construction if these phenomena should not be corrected.
      * </p>
-     * @param referenceDate reference date from which all other dates are computed
      * @param updater updater used to load Digital Elevation Model tiles
      * @param maxCachedTiles maximum number of tiles stored in the cache
      * @param algorithmID identifier of algorithm to use for Digital Elevation Model intersection
@@ -145,13 +139,12 @@ public class Rugged {
      * @param aInterpolationOrder order to use for attitude interpolation
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
-    public Rugged(final AbsoluteDate referenceDate,
-                  final TileUpdater updater, final int maxCachedTiles,
+    public Rugged(final TileUpdater updater, final int maxCachedTiles,
                   final AlgorithmId algorithmID, final OneAxisEllipsoid ellipsoid, final Frame inertialFrame,
                   final List<Pair<AbsoluteDate, PVCoordinates>> positionsVelocities, final int pvInterpolationOrder,
                   final List<Pair<AbsoluteDate, Rotation>> quaternions, final int aInterpolationOrder)
         throws RuggedException {
-        this(referenceDate, updater, maxCachedTiles, algorithmID,
+        this(updater, maxCachedTiles, algorithmID,
              extend(ellipsoid), inertialFrame,
              selectPVCoordinatesProvider(positionsVelocities, pvInterpolationOrder, inertialFrame),
              selectAttitudeProvider(quaternions, aInterpolationOrder, inertialFrame));
@@ -166,7 +159,6 @@ public class Rugged {
      * and {@link #setAberrationOfLightCorrection(boolean) setAberrationOfLightCorrection}
      * can be made after construction if these phenomena should not be corrected.
      * </p>
-     * @param referenceDate reference date from which all other dates are computed
      * @param updater updater used to load Digital Elevation Model tiles
      * @param maxCachedTiles maximum number of tiles stored in the cache
      * @param algorithmID identifier of algorithm to use for Digital Elevation Model intersection
@@ -176,13 +168,12 @@ public class Rugged {
      * @param propagator global propagator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
-    public Rugged(final AbsoluteDate referenceDate,
-                  final TileUpdater updater, final int maxCachedTiles,
+    public Rugged(final TileUpdater updater, final int maxCachedTiles,
                   final AlgorithmId algorithmID, final EllipsoidId ellipsoidID,
                   final InertialFrameId inertialFrameID, final BodyRotatingFrameId bodyRotatingFrameID,
                   final Propagator propagator)
         throws RuggedException {
-        this(referenceDate, updater, maxCachedTiles, algorithmID,
+        this(updater, maxCachedTiles, algorithmID,
              selectEllipsoid(ellipsoidID, selectBodyRotatingFrame(bodyRotatingFrameID)),
              selectInertialFrame(inertialFrameID), propagator);
     }
@@ -196,7 +187,6 @@ public class Rugged {
      * and {@link #setAberrationOfLightCorrection(boolean) setAberrationOfLightCorrection}
      * can be made after construction if these phenomena should not be corrected.
      * </p>
-     * @param referenceDate reference date from which all other dates are computed
      * @param updater updater used to load Digital Elevation Model tiles
      * @param maxCachedTiles maximum number of tiles stored in the cache
      * @param algorithmID identifier of algorithm to use for Digital Elevation Model intersection
@@ -205,18 +195,16 @@ public class Rugged {
      * @param propagator global propagator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
-    public Rugged(final AbsoluteDate referenceDate,
-                  final TileUpdater updater, final int maxCachedTiles,
+    public Rugged(final TileUpdater updater, final int maxCachedTiles,
                   final AlgorithmId algorithmID, final OneAxisEllipsoid ellipsoid,
                   final Frame inertialFrame, final Propagator propagator)
         throws RuggedException {
-        this(referenceDate, updater, maxCachedTiles, algorithmID,
+        this(updater, maxCachedTiles, algorithmID,
              extend(ellipsoid), inertialFrame,
              propagator, propagator.getAttitudeProvider());
     }
 
     /** Low level private constructor.
-     * @param referenceDate reference date from which all other dates are computed
      * @param updater updater used to load Digital Elevation Model tiles
      * @param maxCachedTiles maximum number of tiles stored in the cache
      * @param algorithmID identifier of algorithm to use for Digital Elevation Model intersection
@@ -226,15 +214,11 @@ public class Rugged {
      * @param aProvider attitude propagator/interpolator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
-    private Rugged(final AbsoluteDate referenceDate,
-                  final TileUpdater updater, final int maxCachedTiles, final AlgorithmId algorithmID,
-                  final ExtendedEllipsoid ellipsoid, final Frame inertialFrame,
-                  final PVCoordinatesProvider pvProvider, final AttitudeProvider aProvider)
+    private Rugged(final TileUpdater updater, final int maxCachedTiles, final AlgorithmId algorithmID,
+                   final ExtendedEllipsoid ellipsoid, final Frame inertialFrame,
+                   final PVCoordinatesProvider pvProvider, final AttitudeProvider aProvider)
         throws RuggedException {
 
-        // time reference
-        this.referenceDate = referenceDate;
-
         // space reference
         this.ellipsoid     = ellipsoid;
 
@@ -250,13 +234,6 @@ public class Rugged {
 
     }
 
-    /** Get the reference date.
-     * @return reference date
-     */
-    public AbsoluteDate getReferenceDate() {
-        return referenceDate;
-    }
-
     /** Set flag for light time correction.
      * <p>
      * This methods set the flag for compensating or not light time between
@@ -322,7 +299,7 @@ public class Rugged {
             positions.add(new Vector3D(plos.getPx(), plos.getPy(), plos.getPz()));
             los.add(new Vector3D(plos.getDx(), plos.getDy(), plos.getDz()).normalize());
         }
-        final Sensor sensor = new Sensor(sensorName, referenceDate, datationModel, positions, los);
+        final Sensor sensor = new Sensor(sensorName, datationModel, positions, los);
         sensors.put(sensor.getName(), sensor);
     }
 
diff --git a/src/main/java/org/orekit/rugged/core/Sensor.java b/src/main/java/org/orekit/rugged/core/Sensor.java
index 4c87acd07b8117e966cd68be39617e4e3fd1ba83..3f4e953bb87f6c06bc9d995f94a324324447ad2a 100644
--- a/src/main/java/org/orekit/rugged/core/Sensor.java
+++ b/src/main/java/org/orekit/rugged/core/Sensor.java
@@ -36,9 +36,6 @@ public class Sensor {
     /** Name of the sensor. */
     private final String name;
 
-    /** Reference date. */
-    private final AbsoluteDate referenceDate;
-
     /** Pixels positions. */
     private final List<Vector3D> positions;
 
@@ -61,12 +58,10 @@ public class Sensor {
      * @param los pixels lines-of-sight
      * @param datationModel datation model
      */
-    public Sensor(final String name,
-                  final AbsoluteDate referenceDate, final LineDatation datationModel,
+    public Sensor(final String name, final LineDatation datationModel,
                   final List<Vector3D> positions, final List<Vector3D> los) {
 
         this.name          = name;
-        this.referenceDate = referenceDate;
         this.positions     = positions;
         this.los           = los;
         this.datationModel = datationModel;
@@ -146,7 +141,7 @@ public class Sensor {
      * @return date corresponding to line number
      */
     public AbsoluteDate getDate(final double lineNumber) {
-        return referenceDate.shiftedBy(datationModel.getDate(lineNumber));
+        return datationModel.getDate(lineNumber);
     }
 
     /** Get the line number.
@@ -154,7 +149,7 @@ public class Sensor {
      * @return line number corresponding to date
      */
     public double getLine(final AbsoluteDate date) {
-        return datationModel.getLine(date.durationFrom(referenceDate));
+        return datationModel.getLine(date);
     }
 
     /** Get the mean plane normal.
diff --git a/src/test/java/org/orekit/rugged/api/RuggedTest.java b/src/test/java/org/orekit/rugged/api/RuggedTest.java
index bac02f19cd2c3509a186a8f71e0a5a1c4c578bd8..fbd7234e1f2a541644edb8650085a4e174c6c9a7 100644
--- a/src/test/java/org/orekit/rugged/api/RuggedTest.java
+++ b/src/test/java/org/orekit/rugged/api/RuggedTest.java
@@ -140,15 +140,13 @@ public class RuggedTest {
                                                  FastMath.toRadians(30.0), 16.0,
                                                  FastMath.toRadians(1.0), 1201);
 
-        Rugged rugged = new Rugged(t0, updater, 8,
+        Rugged rugged = new Rugged(updater, 8,
                                    AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84,
                                    InertialFrameId.EME2000,
                                    BodyRotatingFrameId.ITRF,
                                    pv, 8, q, 8);
 
-        Assert.assertEquals(new AbsoluteDate("2012-01-01T00:00:00", TimeScalesFactory.getUTC()),
-                            rugged.getReferenceDate());
         Assert.assertTrue(rugged.isLightTimeCorrected());
         rugged.setLightTimeCorrection(false);
         Assert.assertFalse(rugged.isLightTimeCorrected());
@@ -174,14 +172,13 @@ public class RuggedTest {
                                                  FastMath.toRadians(30.0), 16.0,
                                                  FastMath.toRadians(1.0), 1201);
 
-        Rugged rugged = new Rugged(propagator.getInitialState().getDate(), updater, 8,
+        Rugged rugged = new Rugged(updater, 8,
                                    AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84,
                                    InertialFrameId.EME2000,
                                    BodyRotatingFrameId.ITRF,
                                    propagator);
 
-        Assert.assertEquals(propagator.getInitialState().getDate(), rugged.getReferenceDate());
         Assert.assertTrue(rugged.isLightTimeCorrected());
         rugged.setLightTimeCorrection(false);
         Assert.assertFalse(rugged.isLightTimeCorrected());
@@ -220,17 +217,17 @@ public class RuggedTest {
                                        FastMath.toRadians(10.0), dimension);
 
         // linear datation model: at reference time we get line 1000, and the rate is one line every 1.5ms
-        LineDatation lineDatation = new LinearLineDatation(dimension / 2, 1.0 / 1.5e-3);
+        LineDatation lineDatation = new LinearLineDatation(crossing, dimension / 2, 1.0 / 1.5e-3);
         int firstLine = 0;
         int lastLine  = dimension;
 
         Propagator propagator = createPropagator(earth, gravityField, orbit);
-        propagator.propagate(crossing.shiftedBy(lineDatation.getDate(firstLine) - 1.0));
+        propagator.propagate(lineDatation.getDate(firstLine).shiftedBy(-1.0));
         propagator.setEphemerisMode();
-        propagator.propagate(crossing.shiftedBy(lineDatation.getDate(lastLine) + 1.0));
+        propagator.propagate(lineDatation.getDate(lastLine).shiftedBy(+1.0));
         Propagator ephemeris = propagator.getGeneratedEphemeris();
 
-        Rugged rugged = new Rugged(crossing, updater, 8,
+        Rugged rugged = new Rugged(updater, 8,
                                    AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84,
                                    InertialFrameId.EME2000,
@@ -299,17 +296,17 @@ public class RuggedTest {
                                        FastMath.toRadians(10.0), dimension);
 
         // linear datation model: at reference time we get line 200, and the rate is one line every 1.5ms
-        LineDatation lineDatation = new LinearLineDatation(dimension / 2, 1.0 / 1.5e-3);
+        LineDatation lineDatation = new LinearLineDatation(crossing, dimension / 2, 1.0 / 1.5e-3);
         int firstLine = 0;
         int lastLine  = dimension;
 
-        Rugged rugged = new Rugged(crossing, null, -1,
+        Rugged rugged = new Rugged(null, -1,
                                    AlgorithmId.IGNORE_DEM_USE_ELLIPSOID,
                                    EllipsoidId.WGS84,
                                    InertialFrameId.EME2000,
                                    BodyRotatingFrameId.ITRF,
-                                   orbitToPV(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 8,
-                                   orbitToQ(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 2);
+                                   orbitToPV(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 8,
+                                   orbitToQ(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 2);
 
         rugged.setLineSensor("line", los, lineDatation);
 
@@ -350,17 +347,17 @@ public class RuggedTest {
                                        FastMath.toRadians(10.0), dimension);
 
         // linear datation model: at reference time we get line 200, and the rate is one line every 1.5ms
-        LineDatation lineDatation = new LinearLineDatation(dimension / 2, 1.0 / 1.5e-3);
+        LineDatation lineDatation = new LinearLineDatation(crossing, dimension / 2, 1.0 / 1.5e-3);
         int firstLine = 0;
         int lastLine  = dimension;
 
-        Rugged rugged = new Rugged(crossing, null, -1,
+        Rugged rugged = new Rugged(null, -1,
                                    AlgorithmId.IGNORE_DEM_USE_ELLIPSOID,
                                    EllipsoidId.WGS84,
                                    InertialFrameId.EME2000,
                                    BodyRotatingFrameId.ITRF,
-                                   orbitToPV(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 8,
-                                   orbitToQ(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 2);
+                                   orbitToPV(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 8,
+                                   orbitToQ(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 2);
 
         rugged.setLineSensor("line", los, lineDatation);
 
@@ -403,7 +400,7 @@ public class RuggedTest {
                                        FastMath.toRadians(1.0), dimension);
 
         // linear datation model: at reference time we get line 100, and the rate is one line every 1.5ms
-        LineDatation lineDatation = new LinearLineDatation(dimension / 2, 1.0 / 1.5e-3);
+        LineDatation lineDatation = new LinearLineDatation(crossing, dimension / 2, 1.0 / 1.5e-3);
         int firstLine = 0;
         int lastLine  = dimension;
 
@@ -411,23 +408,23 @@ public class RuggedTest {
                 new RandomLandscapeUpdater(0.0, 9000.0, 0.5, 0xf0a401650191f9f6l,
                                            FastMath.toRadians(1.0), 257);
 
-        Rugged ruggedFull = new Rugged(crossing, updater, 8,
+        Rugged ruggedFull = new Rugged(updater, 8,
                                        AlgorithmId.DUVENHAGE,
                                        EllipsoidId.WGS84,
                                        InertialFrameId.EME2000,
                                        BodyRotatingFrameId.ITRF,
-                                       orbitToPV(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 8,
-                                       orbitToQ(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 2);
+                                       orbitToPV(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 8,
+                                       orbitToQ(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 2);
         ruggedFull.setLineSensor("line", los, lineDatation);
         GeodeticPoint[] gpWithFlatBodyCorrection = ruggedFull.directLocalization("line", 100);
 
-        Rugged ruggedFlat = new Rugged(crossing, updater, 8,
+        Rugged ruggedFlat = new Rugged(updater, 8,
                                        AlgorithmId.DUVENHAGE_FLAT_BODY,
                                        EllipsoidId.WGS84,
                                        InertialFrameId.EME2000,
                                        BodyRotatingFrameId.ITRF,
-                                       orbitToPV(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 8,
-                                       orbitToQ(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 2);
+                                       orbitToPV(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 8,
+                                       orbitToQ(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 2);
         ruggedFlat.setLineSensor("line", los, lineDatation);
         GeodeticPoint[] gpWithoutFlatBodyCorrection = ruggedFlat.directLocalization("line", 100);
 
@@ -465,7 +462,7 @@ public class RuggedTest {
                                        FastMath.toRadians(1.0), dimension);
 
         // linear datation model: at reference time we get line 100, and the rate is one line every 1.5ms
-        LineDatation lineDatation = new LinearLineDatation(dimension / 2, 1.0 / 1.5e-3);
+        LineDatation lineDatation = new LinearLineDatation(crossing, dimension / 2, 1.0 / 1.5e-3);
         int firstLine = 0;
         int lastLine  = dimension;
 
@@ -473,24 +470,24 @@ public class RuggedTest {
                 new RandomLandscapeUpdater(0.0, 9000.0, 0.5, 0xf0a401650191f9f6l,
                                            FastMath.toRadians(1.0), 257);
 
-        Rugged rugged = new Rugged(crossing, updater, 8,
+        Rugged rugged = new Rugged(updater, 8,
                                    AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84,
                                    InertialFrameId.EME2000,
                                    BodyRotatingFrameId.ITRF,
-                                   orbitToPV(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 8,
-                                   orbitToQ(orbit, earth, lineDatation, crossing, firstLine, lastLine, 0.25), 2);
+                                   orbitToPV(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 8,
+                                   orbitToQ(orbit, earth, lineDatation, firstLine, lastLine, 0.25), 2);
         rugged.setLightTimeCorrection(false);
         rugged.setAberrationOfLightCorrection(false);
         rugged.setLineSensor("line", los, lineDatation);
 
-        double referenceLine  = 100.00;
+        double referenceLine = 100.00;
         GeodeticPoint[] gp = rugged.directLocalization("line", referenceLine);
 
         for (int i = 1; i < gp.length; ++i) {
             SensorPixel sp = rugged.inverseLocalization("line", gp[i], 0, dimension);
-            Assert.assertEquals(referenceLine,  sp.getLineNumber(),  3.0e-9);
-            Assert.assertEquals(i,              sp.getPixelNumber(), 8.0e-5);
+            Assert.assertEquals(referenceLine, sp.getLineNumber(),  3.0e-9);
+            Assert.assertEquals(i,             sp.getPixelNumber(), 8.0e-5);
         }
 
     }
@@ -586,13 +583,13 @@ public class RuggedTest {
         return new Pair<AbsoluteDate, Rotation>(t0.shiftedBy(dt), new Rotation(q0, q1, q2, q3, true));
     }
 
-    private List<Pair<AbsoluteDate, PVCoordinates>> orbitToPV(Orbit orbit, BodyShape earth, LineDatation lineDatation,
-                                                              AbsoluteDate crossing, int firstLine, int lastLine,
+    private List<Pair<AbsoluteDate, PVCoordinates>> orbitToPV(Orbit orbit, BodyShape earth,
+                                                              LineDatation lineDatation, int firstLine, int lastLine,
                                                               double step)
         throws PropagationException {
         Propagator propagator = new KeplerianPropagator(orbit);
         propagator.setAttitudeProvider(new YawCompensation(new NadirPointing(earth)));
-        propagator.propagate(crossing.shiftedBy(lineDatation.getDate(firstLine) - 1.0));
+        propagator.propagate(lineDatation.getDate(firstLine).shiftedBy(-1.0));
         final List<Pair<AbsoluteDate, PVCoordinates>> list = new ArrayList<Pair<AbsoluteDate, PVCoordinates>>();
         propagator.setMasterMode(step, new OrekitFixedStepHandler() {
             public void init(SpacecraftState s0, AbsoluteDate t) {
@@ -602,17 +599,17 @@ public class RuggedTest {
                                                                currentState.getPVCoordinates()));
             }
         });
-        propagator.propagate(crossing.shiftedBy(lineDatation.getDate(lastLine) + 1.0));
+        propagator.propagate(lineDatation.getDate(lastLine).shiftedBy(+1.0));
         return list;
     }
 
-    private List<Pair<AbsoluteDate, Rotation>> orbitToQ(Orbit orbit, BodyShape earth, LineDatation lineDatation,
-                                                        AbsoluteDate crossing, int firstLine, int lastLine,
+    private List<Pair<AbsoluteDate, Rotation>> orbitToQ(Orbit orbit, BodyShape earth,
+                                                        LineDatation lineDatation, int firstLine, int lastLine,
                                                         double step)
         throws PropagationException {
         Propagator propagator = new KeplerianPropagator(orbit);
         propagator.setAttitudeProvider(new YawCompensation(new NadirPointing(earth)));
-        propagator.propagate(crossing.shiftedBy(lineDatation.getDate(firstLine) - 1.0));
+        propagator.propagate(lineDatation.getDate(firstLine).shiftedBy(-1.0));
         final List<Pair<AbsoluteDate, Rotation>> list = new ArrayList<Pair<AbsoluteDate, Rotation>>();
         propagator.setMasterMode(step, new OrekitFixedStepHandler() {
             public void init(SpacecraftState s0, AbsoluteDate t) {
@@ -622,7 +619,7 @@ public class RuggedTest {
                                                           currentState.getAttitude().getRotation()));
             }
         });
-        propagator.propagate(crossing.shiftedBy(lineDatation.getDate(lastLine) + 1.0));
+        propagator.propagate(lineDatation.getDate(lastLine).shiftedBy(+1.0));
         return list;
     }
 
diff --git a/src/test/java/org/orekit/rugged/core/SensorTest.java b/src/test/java/org/orekit/rugged/core/SensorTest.java
index 9a5c3eae4072a921cfb88e71898102a8870439f3..748aedbb80b57ebcb4d06c6deb4ff9c995ac4334 100644
--- a/src/test/java/org/orekit/rugged/core/SensorTest.java
+++ b/src/test/java/org/orekit/rugged/core/SensorTest.java
@@ -47,8 +47,8 @@ public class SensorTest {
             los.add(new Vector3D(FastMath.cos(alpha), fovCenter, FastMath.sin(alpha), cross));
         }
 
-        final Sensor sensor = new Sensor("perfect line", AbsoluteDate.J2000_EPOCH,
-                                         new LinearLineDatation(0.0, 1.0 / 1.5e-3), positions, los);
+        final Sensor sensor = new Sensor("perfect line",
+                                         new LinearLineDatation(AbsoluteDate.J2000_EPOCH, 0.0, 1.0 / 1.5e-3), positions, los);
 
         Assert.assertEquals("perfect line", sensor.getName());
         Assert.assertEquals(AbsoluteDate.J2000_EPOCH, sensor.getDate(0.0));
@@ -80,8 +80,8 @@ public class SensorTest {
             los.add(new Vector3D(cA * cD, fovCenter, sA * cD, cross, sD, normal));
         }
 
-        final Sensor sensor = new Sensor("noisy line", AbsoluteDate.J2000_EPOCH,
-                                         new LinearLineDatation(0.0, 1.0 / 1.5e-3), positions, los);
+        final Sensor sensor = new Sensor("noisy line",
+                                         new LinearLineDatation(AbsoluteDate.J2000_EPOCH, 0.0, 1.0 / 1.5e-3), positions, los);
 
         Assert.assertEquals("noisy line", sensor.getName());
         Assert.assertEquals(AbsoluteDate.J2000_EPOCH, sensor.getDate(0.0));