diff --git a/core/src/main/java/org/orekit/rugged/api/Rugged.java b/core/src/main/java/org/orekit/rugged/api/Rugged.java
index d3ca2b350d7c282289475d07e7090cdca6ffe8dd..e617532f1af58f6ce15594f2aadbeec98415cadf 100644
--- a/core/src/main/java/org/orekit/rugged/api/Rugged.java
+++ b/core/src/main/java/org/orekit/rugged/api/Rugged.java
@@ -69,9 +69,6 @@ public class Rugged {
     /** Maximum number of evaluations. */
     private static final int MAX_EVAL = 50;
 
-    /** Time step for frames transforms interpolations. */
-    private static final double FRAMES_TRANSFORMS_INTERPOLATION_STEP = 0.001;
-
     /** Reference ellipsoid. */
     private final ExtendedEllipsoid ellipsoid;
 
@@ -117,6 +114,7 @@ public class Rugged {
      * @param quaternions satellite quaternions
      * @param aInterpolationNumber number of points to use for attitude interpolation
      * @param aFilter filter for derivatives from the sample to use in attitude interpolation
+     * @param tStep step to use for inertial frame to body frame transforms cache computations
      * @exception RuggedException if data needed for some frame cannot be loaded or if position
      * or attitude samples do not fully cover the [{@code minDate}, {@code maxDate}] search time span
      */
@@ -127,13 +125,13 @@ public class Rugged {
                   final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationNumber,
                   final CartesianDerivativesFilter pvFilter,
                   final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationNumber,
-                  final AngularDerivativesFilter aFilter)
+                  final AngularDerivativesFilter aFilter, final double tStep)
         throws RuggedException {
         this(updater, maxCachedTiles, algorithmID,
              selectEllipsoid(ellipsoidID, selectBodyRotatingFrame(bodyRotatingFrameID)),
              selectInertialFrame(inertialFrameID), minDate, maxDate, overshootTolerance,
              positionsVelocities, pvInterpolationNumber, pvFilter,
-             quaternions, aInterpolationNumber, aFilter);
+             quaternions, aInterpolationNumber, aFilter, tStep);
     }
 
     /** Build a configured instance.
@@ -159,6 +157,7 @@ public class Rugged {
      * @param quaternions satellite quaternions
      * @param aInterpolationNumber number of points to use for attitude interpolation
      * @param aFilter filter for derivatives from the sample to use in attitude interpolation
+     * @param tStep step to use for inertial frame to body frame transforms cache computations
      * @exception RuggedException if data needed for some frame cannot be loaded or if position
      * or attitude samples do not fully cover the [{@code minDate}, {@code maxDate}] search time span
      */
@@ -168,7 +167,7 @@ public class Rugged {
                   final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationNumber,
                   final CartesianDerivativesFilter pvFilter,
                   final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationNumber,
-                  final AngularDerivativesFilter aFilter)
+                  final AngularDerivativesFilter aFilter, final double tStep)
         throws RuggedException {
 
         // space reference
@@ -179,7 +178,7 @@ public class Rugged {
                                                      minDate, maxDate, overshootTolerance,
                                                      positionsVelocities, pvInterpolationNumber, pvFilter,
                                                      quaternions, aInterpolationNumber, aFilter,
-                                                     FRAMES_TRANSFORMS_INTERPOLATION_STEP);
+                                                     tStep);
 
         // intersection algorithm
         this.algorithm = selectAlgorithm(algorithmID, updater, maxCachedTiles);
@@ -214,6 +213,7 @@ public class Rugged {
      * @param interpolationNumber number of points to use for inertial/Earth/spacraft transforms interpolations
      * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
      * @param aFilter filter for derivatives from the sample to use in attitude interpolation
+     * @param tStep step to use for inertial frame to body frame transforms cache computations
      * @param propagator global propagator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
@@ -223,12 +223,12 @@ public class Rugged {
                   final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
                   final double interpolationStep, final int interpolationNumber,
                   final CartesianDerivativesFilter pvFilter, final AngularDerivativesFilter aFilter,
-                  final Propagator propagator)
+                  final double tStep, final Propagator propagator)
         throws RuggedException {
         this(updater, maxCachedTiles, algorithmID,
              selectEllipsoid(ellipsoidID, selectBodyRotatingFrame(bodyRotatingFrameID)),
              selectInertialFrame(inertialFrameID), minDate, maxDate, overshootTolerance,
-             interpolationStep, interpolationNumber, pvFilter, aFilter, propagator);
+             interpolationStep, interpolationNumber, pvFilter, aFilter, tStep, propagator);
     }
 
     /** Build a configured instance.
@@ -252,6 +252,7 @@ public class Rugged {
      * @param interpolationNumber number of points of to use for inertial/Earth/spacraft transforms interpolations
      * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
      * @param aFilter filter for derivatives from the sample to use in attitude interpolation
+     * @param tStep step to use for inertial frame to body frame transforms cache computations
      * @param propagator global propagator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
@@ -260,7 +261,7 @@ public class Rugged {
                   final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
                   final double interpolationStep, final int interpolationNumber,
                   final CartesianDerivativesFilter pvFilter, final AngularDerivativesFilter aFilter,
-                  final Propagator propagator)
+                  final double tStep, final Propagator propagator)
         throws RuggedException {
         try {
 
@@ -302,7 +303,7 @@ public class Rugged {
                                                          minDate, maxDate, overshootTolerance,
                                                          positionsVelocities, interpolationNumber, pvFilter,
                                                          quaternions, interpolationNumber, aFilter,
-                                                         FRAMES_TRANSFORMS_INTERPOLATION_STEP);
+                                                         tStep);
 
             // intersection algorithm
             this.algorithm = selectAlgorithm(algorithmID, updater, maxCachedTiles);
diff --git a/core/src/test/java/org/orekit/rugged/api/RuggedTest.java b/core/src/test/java/org/orekit/rugged/api/RuggedTest.java
index c5eaea235f9a26bc7ce72a547326e2ef9e1040e6..bcfc5401645ca1f5c082952f5daade44e1401963 100644
--- a/core/src/test/java/org/orekit/rugged/api/RuggedTest.java
+++ b/core/src/test/java/org/orekit/rugged/api/RuggedTest.java
@@ -146,7 +146,7 @@ public class RuggedTest {
         Rugged rugged = new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    pv.get(0).getDate(), pv.get(pv.size() - 1).getDate(), 5.0,
-                                   pv, 8, CartesianDerivativesFilter.USE_PV, q, 8, AngularDerivativesFilter.USE_R);
+                                   pv, 8, CartesianDerivativesFilter.USE_PV, q, 8, AngularDerivativesFilter.USE_R, 0.001);
 
         Assert.assertTrue(rugged.isLightTimeCorrected());
         rugged.setLightTimeCorrection(false);
@@ -176,7 +176,7 @@ public class RuggedTest {
         Rugged rugged = new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    orbit.getDate().shiftedBy(-10.0), orbit.getDate().shiftedBy(+10.0), 5.0,
-                                   1.0, 8, CartesianDerivativesFilter.USE_PV, AngularDerivativesFilter.USE_R, propagator);
+                                   1.0, 8, CartesianDerivativesFilter.USE_PV, AngularDerivativesFilter.USE_R, 0.001, propagator);
 
         Assert.assertTrue(rugged.isLightTimeCorrected());
         rugged.setLightTimeCorrection(false);
@@ -223,12 +223,12 @@ public class RuggedTest {
         Assert.assertNotNull(new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                         EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                         t0.shiftedBy(4), t0.shiftedBy(6), 5.0,
-                                        pv, 2,CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R));
+                                        pv, 2,CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R, 0.001));
         try {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    t0.shiftedBy(-1), t0.shiftedBy(6), 0.0001,
-                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R, 0.001);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(-1), re.getParts()[0]);
@@ -238,7 +238,7 @@ public class RuggedTest {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    t0.shiftedBy(2), t0.shiftedBy(6), 0.0001,
-                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R, 0.001);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(2), re.getParts()[0]);
@@ -248,7 +248,7 @@ public class RuggedTest {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    t0.shiftedBy(4), t0.shiftedBy(9), 0.0001,
-                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R, 0.001);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(9), re.getParts()[0]);
@@ -258,7 +258,7 @@ public class RuggedTest {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    t0.shiftedBy(4), t0.shiftedBy(12), 0.0001,
-                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R, 0.001);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(12), re.getParts()[0]);
@@ -315,7 +315,7 @@ public class RuggedTest {
                                    lineDatation.getDate(firstLine), lineDatation.getDate(lastLine), 5.0,
                                    1.0 / lineDatation.getRate(0.0), 8,
                                    CartesianDerivativesFilter.USE_PV, AngularDerivativesFilter.USE_R,
-                                   ephemeris);
+                                   0.001, ephemeris);
         rugged.setLightTimeCorrection(true);
         rugged.setAberrationOfLightCorrection(true);
 
@@ -393,7 +393,7 @@ public class RuggedTest {
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
                                    CartesianDerivativesFilter.USE_PV,
                                    orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
-                                   AngularDerivativesFilter.USE_R);
+                                   AngularDerivativesFilter.USE_R, 0.001);
 
         rugged.addLineSensor(lineSensor);
 
@@ -448,7 +448,7 @@ public class RuggedTest {
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
                                    CartesianDerivativesFilter.USE_PV,
                                    orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
-                                   AngularDerivativesFilter.USE_R);
+                                   AngularDerivativesFilter.USE_R, 0.001);
 
         rugged.addLineSensor(lineSensor);
 
@@ -508,7 +508,7 @@ public class RuggedTest {
                                        orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
                                        CartesianDerivativesFilter.USE_PV,
                                        orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
-                                       AngularDerivativesFilter.USE_R);
+                                       AngularDerivativesFilter.USE_R, 0.001);
         ruggedFull.addLineSensor(lineSensor);
         GeodeticPoint[] gpWithFlatBodyCorrection = ruggedFull.directLocalization("line", 100);
 
@@ -518,7 +518,7 @@ public class RuggedTest {
                                        orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
                                        CartesianDerivativesFilter.USE_PV,
                                        orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
-                                       AngularDerivativesFilter.USE_R);
+                                       AngularDerivativesFilter.USE_R, 0.001);
         ruggedFlat.addLineSensor(lineSensor);
         GeodeticPoint[] gpWithoutFlatBodyCorrection = ruggedFlat.directLocalization("line", 100);
 
@@ -583,7 +583,7 @@ public class RuggedTest {
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
                                    CartesianDerivativesFilter.USE_PV,
                                    orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
-                                   AngularDerivativesFilter.USE_R);
+                                   AngularDerivativesFilter.USE_R, 0.001);
         rugged.setLightTimeCorrection(true);
         rugged.setAberrationOfLightCorrection(true);
         for (LineSensor lineSensor : sensors) {
@@ -692,7 +692,7 @@ public class RuggedTest {
                                    AlgorithmId.DUVENHAGE, EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    satellitePVList.get(0).getDate(), satellitePVList.get(satellitePVList.size() - 1).getDate(), 5.0,
                                    satellitePVList, 8, CartesianDerivativesFilter.USE_PV,
-                                   satelliteQList, 8, AngularDerivativesFilter.USE_R);
+                                   satelliteQList, 8, AngularDerivativesFilter.USE_R, 0.001);
 
         List<Vector3D> lineOfSight = new ArrayList<Vector3D>();
         lineOfSight.add(new Vector3D(-0.011204, 0.181530, 1d).normalize());
@@ -847,7 +847,7 @@ public class RuggedTest {
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
                                    CartesianDerivativesFilter.USE_PV, 
                                    orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
-                                   AngularDerivativesFilter.USE_R);
+                                   AngularDerivativesFilter.USE_R, 0.001);
         rugged.setLightTimeCorrection(lightTimeCorrection);
         rugged.setAberrationOfLightCorrection(aberrationOfLightCorrection);
         rugged.addLineSensor(lineSensor);
diff --git a/src/site/xdoc/changes.xml b/src/site/xdoc/changes.xml
index f4616564ebc1067ec2a0be93ec57c52df6aaa3f0..5b656467f907c1332338b9326cff0b6ce080740a 100644
--- a/src/site/xdoc/changes.xml
+++ b/src/site/xdoc/changes.xml
@@ -22,8 +22,11 @@
   <body>
     <release version="1.0" date="TBD"
              description="TBD">
+      <action dev="luc" type="add">
+        Time step for internal transform caching is now user-configurable.
+      </action>
       <action dev="luc" type="update">
-        Swtiched maven configuration to multi-modules.
+        Switched maven configuration to multi-modules.
       </action>
       <action dev="luc" type="update">
         Updated UML diagrams.