diff --git a/csmapi.i b/csmapi.i
index 40812d31408e8b97160f2e700740e6c4825b6ce2..7795a036db1820d77fc42629adfbc2c470d1d8dd 100644
--- a/csmapi.i
+++ b/csmapi.i
@@ -8,3 +8,4 @@
 %include "geometricmodel.i"
 %include "rastergm.i"
 %include "plugin.i"
+%include "settableellipsoid.i"
diff --git a/fixture/model.cpp b/fixture/model.cpp
index 15bc633c6e77f29b3c866b3fb7cb2eb8cce0e005..5de15b95efdfd10537bd456c8c54ecf9c06fa98c 100644
--- a/fixture/model.cpp
+++ b/fixture/model.cpp
@@ -482,4 +482,13 @@ std::vector<double> FixtureSensorModel::getCrossCovarianceMatrix(
   throw csm::Error(csm::Error::UNSUPPORTED_FUNCTION,
                    "Unsupported function",
                    "FixtureSensorModel::getCrossCovarianceMatrix");
-}
\ No newline at end of file
+}
+
+csm::Ellipsoid FixtureSensorModel::getEllipsoid() const {
+    return csm::Ellipsoid(m_majorAxis, m_minorAxis);
+}
+
+void FixtureSensorModel::setEllipsoid(const csm::Ellipsoid &ellipsoid) {
+    m_majorAxis = ellipsoid.getSemiMajorRadius();
+    m_minorAxis = ellipsoid.getSemiMinorRadius();
+}
diff --git a/fixture/model.h b/fixture/model.h
index 094fe73b9fda6c25e3a2acf23cfdae864db13ca6..9c73345752602201cf0f543fdf9dbc7e18ff1502 100644
--- a/fixture/model.h
+++ b/fixture/model.h
@@ -188,16 +188,21 @@ public:
    virtual std::string getModelState() const;
 
    virtual void replaceModelState(const std::string& argState);
+   
+   virtual csm::Ellipsoid getEllipsoid() const;
 
+   virtual void setEllipsoid(const csm:: Ellipsoid &ellipsoid);
 
 
 private:
    // This private form of the g2i method is used to ensure thread safety.
    virtual csm::ImageCoord groundToImage(
-      const csm::EcefCoord& groundPt,
-      const std::vector<double> &adjustments,
-      double desiredPrecision = 0.001,
-      double* achievedPrecision = NULL,
-      csm::WarningList* warnings = NULL) const;
+   const csm::EcefCoord& groundPt,
+   const std::vector<double> &adjustments,
+   double desiredPrecision = 0.001,
+   double* achievedPrecision = NULL,
+   csm::WarningList* warnings = NULL) const;
+   double m_minorAxis;
+   double m_majorAxis;
 };
 #endif
diff --git a/python/tests/test_model.py b/python/tests/test_model.py
index 6522700e6308c529090bf990c799304a4f83aa65..2493fdbb20b593f3bb7a1247100d46aeb28c279e 100644
--- a/python/tests/test_model.py
+++ b/python/tests/test_model.py
@@ -57,4 +57,7 @@ def test_bad_ground_to_image(model):
     gnd_coord = csmapi.EcefCoord(-1, -1, 0)
     with pytest.warns(Warning) as w:
         img = model.groundToImage(gnd_coord, 0)
-        assert len(w) == 1
\ No newline at end of file
+        assert len(w) == 1
+
+def test_ellipsoid_is_settable(model):
+    assert isinstance(csmapi.SettableEllipsoid.getEllipsoid(model), csmapi.Ellipsoid)
diff --git a/settableellipsoid.i b/settableellipsoid.i
new file mode 100644
index 0000000000000000000000000000000000000000..6714c47917e81f034f0bcebecce8e6040b0e4a9e
--- /dev/null
+++ b/settableellipsoid.i
@@ -0,0 +1,6 @@
+%module(package="csmapi") settableellipsoid
+%{
+    #include "SettableEllipsoid.h"
+%}
+
+%include "SettableEllipsoid.h"