diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_0.xsp b/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_0.xsp
new file mode 100644
index 0000000000000000000000000000000000000000..227d99c623be7fb6cf80318d4559c4f0f2814faf
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_0.xsp
@@ -0,0 +1,175 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/SPK '
+'2'
+'6'
+'SPKMERGE                                                    '
+BEGIN_ARRAY 1 16
+'MARS -to- ROVER, LOCALIZED              '
+'23AC4A8578F996^8'
+'23AC4B84A5435^8'
+'-4C'
+'1F3'
+'271E'
+'9'
+16
+'-9B717FC874B4A^3'
+'8F0C00BF1949C^3'
+'-11791C7BB95EDC^3'
+'0^0'
+'0^0'
+'0^0'
+'-9B717FC874B4A^3'
+'8F0C00BF1949C^3'
+'-11791C7BB95EDC^3'
+'0^0'
+'0^0'
+'0^0'
+'23A29B2243782C^8'
+'23D7918F325EB^8'
+'1^1'
+'2^1'
+END_ARRAY 1 16
+BEGIN_ARRAY 2 12
+'DE-0425LE-0425                          '
+'23AC4A8578F996^8'
+'23AC4B84A5435^8'
+'1F3'
+'4'
+'1'
+'2'
+12
+'E0BD34^7'
+'500208^8'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'-41F634C^8'
+'A0041^8'
+'8^1'
+'1^1'
+END_ARRAY 2 12
+BEGIN_ARRAY 3 39
+'DE-0425LE-0425                          '
+'23AC4A8578F996^8'
+'23AC4B84A5435^8'
+'A'
+'0'
+'1'
+'2'
+39
+'23ACEF4^8'
+'A8C^5'
+'-182D9A9BFB179A^5'
+'-2476E10E336A1A^4'
+'-B8A3486486B768^1'
+'-17AA1DC98AB4BF^0'
+'11F6AC565388EC^-1'
+'-2003202CA7FB1C^-2'
+'4696DD82DA8E3C^-3'
+'-436A0DEA81049C^-4'
+'-3D906B8CD195B2^-5'
+'1B327152242364^-5'
+'-3FEA99EE1E579A^-6'
+'F8FBAE76383698^5'
+'887854CAE5193^3'
+'-11006081023A6B^2'
+'-220754DC10457C^0'
+'6130AF671931E8^-2'
+'-E83B72F00F3BD8^-3'
+'-1054721423B0A2^-3'
+'6924BC38A4542^-4'
+'-E7BBE4454FE7B8^-5'
+'10DF04C3BBF7EA^-5'
+'6972E9D5ED0014^-7'
+'699181548D915C^5'
+'4B5504F8DBFD08^3'
+'-6CC66492AE1BE^1'
+'-FBD23530BA2778^-1'
+'2FD92127C74098^-2'
+'-459AE2252BA5E8^-3'
+'-1037663F52D79C^-3'
+'3F25DF0A901AB6^-4'
+'-7565B9626659D8^-5'
+'631E5CFD949408^-6'
+'A1EB36F8F8AFA8^-7'
+'23A2634^8'
+'1518^6'
+'23^2'
+'1^1'
+END_ARRAY 3 39
+BEGIN_ARRAY 4 39
+'DE-0425LE-0425                          '
+'23AC4A8578F996^8'
+'23AC4B84A5435^8'
+'4'
+'0'
+'1'
+'2'
+39
+'23A2634^8'
+'1518^6'
+'B00002EDB937A^7'
+'-E969C89A1E30B^6'
+'-124A7464F0595F^6'
+'5BC1A06B5D9C2^4'
+'23748F27DC7DA2^3'
+'-13F1FE0C9663BC^2'
+'3F34782E51C96^-1'
+'33F60EE49FB7BE^-1'
+'-105C286C7007F7^-2'
+'-5CC38010013918^-4'
+'46B8CA23A8F87C^-5'
+'5E380908FD46FC^7'
+'1B7983B2777E94^7'
+'-9AA49B4B5E614^5'
+'-6AD04684E06BC8^4'
+'288E91E21C135^3'
+'642F8C265138A^1'
+'-7A1ABF128E0F28^0'
+'14546AFA061D2B^-1'
+'FE8B1E89D51F3^-3'
+'-970B125DFF63B^-4'
+'2922FD19E7EA68^-5'
+'266DE7098D312C^7'
+'CFEDC8716ABDF8^6'
+'-3F081D8B041946^5'
+'-337818D362154^4'
+'11A5420BC9C15C^3'
+'3690DC976B5E3C^1'
+'-381D8BE2BE2D4E^0'
+'7EDFB99588D58^-2'
+'7BD3086CA25FB8^-3'
+'-44B07AB7EBC32C^-4'
+'1A9A8AA68474EE^-5'
+'238D4B4^8'
+'2A3^6'
+'23^2'
+'1^1'
+END_ARRAY 4 39
+TOTAL_ARRAYS 4
+ ~NAIF/SPC BEGIN COMMENTS~
+; /Users/arsanders/data/msl/kernels/2264ML0121141200805116C00_DRCL_0.bsp LOG FILE
+
+; Created 2023-09-11/17:50:25.00.
+;
+; BEGIN SPKMERGE COMMANDS
+
+LEAPSECONDS_KERNEL = /Users/arsanders/isis_efs/isis_data/base/kernels/lsk/naif0012.tls
+
+SPK_KERNEL = /Users/arsanders/data/msl/kernels/2264ML0121141200805116C00_DRCL_0.bsp
+SOURCE_SPK_KERNEL = /Users/arsanders/isis_efs/isis_data/msl/kernels/spk/msl_surf_rover_loc.bsp
+    INCLUDE_COMMENTS = NO
+    BODIES           = -76
+    BEGIN_TIME       = 2018 DEC 19 12:16:00.289
+    END_TIME         = 2018 DEC 19 12:20:15.462
+SOURCE_SPK_KERNEL = /Users/arsanders/isis_efs/isis_data/msl/kernels/spk/de425s.bsp
+    INCLUDE_COMMENTS = NO
+    BODIES           = 4, 10, 499
+    BEGIN_TIME       = 2018 DEC 19 12:16:00.289
+    END_TIME         = 2018 DEC 19 12:20:15.462
+
+; END SPKMERGE COMMANDS
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_1.xsp b/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_1.xsp
new file mode 100644
index 0000000000000000000000000000000000000000..3b27641dd10da6cb3e54a7cc74df1ff99b851ac2
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_1.xsp
@@ -0,0 +1,175 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/SPK '
+'2'
+'6'
+'SPKMERGE                                                    '
+BEGIN_ARRAY 1 16
+'MARS -to- ROVER, LOCALIZED              '
+'23AC4D556F80C2^8'
+'23AC4E52CC2CCC^8'
+'-4C'
+'1F3'
+'271E'
+'9'
+16
+'-9B717FC874B4A^3'
+'8F0C00BF1949C^3'
+'-11791C7BB95EDC^3'
+'0^0'
+'0^0'
+'0^0'
+'-9B717FC874B4A^3'
+'8F0C00BF1949C^3'
+'-11791C7BB95EDC^3'
+'0^0'
+'0^0'
+'0^0'
+'23A29B2243782C^8'
+'23D7918F325EB^8'
+'1^1'
+'2^1'
+END_ARRAY 1 16
+BEGIN_ARRAY 2 12
+'DE-0425LE-0425                          '
+'23AC4D556F80C2^8'
+'23AC4E52CC2CCC^8'
+'1F3'
+'4'
+'1'
+'2'
+12
+'E0BD34^7'
+'500208^8'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'-41F634C^8'
+'A0041^8'
+'8^1'
+'1^1'
+END_ARRAY 2 12
+BEGIN_ARRAY 3 39
+'DE-0425LE-0425                          '
+'23AC4D556F80C2^8'
+'23AC4E52CC2CCC^8'
+'A'
+'0'
+'1'
+'2'
+39
+'23ACEF4^8'
+'A8C^5'
+'-182D9A9BFB179A^5'
+'-2476E10E336A1A^4'
+'-B8A3486486B768^1'
+'-17AA1DC98AB4BF^0'
+'11F6AC565388EC^-1'
+'-2003202CA7FB1C^-2'
+'4696DD82DA8E3C^-3'
+'-436A0DEA81049C^-4'
+'-3D906B8CD195B2^-5'
+'1B327152242364^-5'
+'-3FEA99EE1E579A^-6'
+'F8FBAE76383698^5'
+'887854CAE5193^3'
+'-11006081023A6B^2'
+'-220754DC10457C^0'
+'6130AF671931E8^-2'
+'-E83B72F00F3BD8^-3'
+'-1054721423B0A2^-3'
+'6924BC38A4542^-4'
+'-E7BBE4454FE7B8^-5'
+'10DF04C3BBF7EA^-5'
+'6972E9D5ED0014^-7'
+'699181548D915C^5'
+'4B5504F8DBFD08^3'
+'-6CC66492AE1BE^1'
+'-FBD23530BA2778^-1'
+'2FD92127C74098^-2'
+'-459AE2252BA5E8^-3'
+'-1037663F52D79C^-3'
+'3F25DF0A901AB6^-4'
+'-7565B9626659D8^-5'
+'631E5CFD949408^-6'
+'A1EB36F8F8AFA8^-7'
+'23A2634^8'
+'1518^6'
+'23^2'
+'1^1'
+END_ARRAY 3 39
+BEGIN_ARRAY 4 39
+'DE-0425LE-0425                          '
+'23AC4D556F80C2^8'
+'23AC4E52CC2CCC^8'
+'4'
+'0'
+'1'
+'2'
+39
+'23A2634^8'
+'1518^6'
+'B00002EDB937A^7'
+'-E969C89A1E30B^6'
+'-124A7464F0595F^6'
+'5BC1A06B5D9C2^4'
+'23748F27DC7DA2^3'
+'-13F1FE0C9663BC^2'
+'3F34782E51C96^-1'
+'33F60EE49FB7BE^-1'
+'-105C286C7007F7^-2'
+'-5CC38010013918^-4'
+'46B8CA23A8F87C^-5'
+'5E380908FD46FC^7'
+'1B7983B2777E94^7'
+'-9AA49B4B5E614^5'
+'-6AD04684E06BC8^4'
+'288E91E21C135^3'
+'642F8C265138A^1'
+'-7A1ABF128E0F28^0'
+'14546AFA061D2B^-1'
+'FE8B1E89D51F3^-3'
+'-970B125DFF63B^-4'
+'2922FD19E7EA68^-5'
+'266DE7098D312C^7'
+'CFEDC8716ABDF8^6'
+'-3F081D8B041946^5'
+'-337818D362154^4'
+'11A5420BC9C15C^3'
+'3690DC976B5E3C^1'
+'-381D8BE2BE2D4E^0'
+'7EDFB99588D58^-2'
+'7BD3086CA25FB8^-3'
+'-44B07AB7EBC32C^-4'
+'1A9A8AA68474EE^-5'
+'238D4B4^8'
+'2A3^6'
+'23^2'
+'1^1'
+END_ARRAY 4 39
+TOTAL_ARRAYS 4
+ ~NAIF/SPC BEGIN COMMENTS~
+; /Users/arsanders/data/msl/kernels/2264ML0121141200805116C00_DRCL_1.bsp LOG FILE
+
+; Created 2023-09-11/17:50:32.00.
+;
+; BEGIN SPKMERGE COMMANDS
+
+LEAPSECONDS_KERNEL = /Users/arsanders/isis_efs/isis_data/base/kernels/lsk/naif0012.tls
+
+SPK_KERNEL = /Users/arsanders/data/msl/kernels/2264ML0121141200805116C00_DRCL_1.bsp
+SOURCE_SPK_KERNEL = /Users/arsanders/isis_efs/isis_data/msl/kernels/spk/msl_surf_rover_loc.bsp
+    INCLUDE_COMMENTS = NO
+    BODIES           = -76
+    BEGIN_TIME       = 2018 DEC 19 12:28:00.252
+    END_TIME         = 2018 DEC 19 12:32:13.614
+SOURCE_SPK_KERNEL = /Users/arsanders/isis_efs/isis_data/msl/kernels/spk/de425s.bsp
+    INCLUDE_COMMENTS = NO
+    BODIES           = 4, 10, 499
+    BEGIN_TIME       = 2018 DEC 19 12:28:00.252
+    END_TIME         = 2018 DEC 19 12:32:13.614
+
+; END SPKMERGE COMMANDS
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_pds3.lbl b/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_pds3.lbl
new file mode 100644
index 0000000000000000000000000000000000000000..5fce5b0c66a63097375e8171cd40a7bb0afe8024
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/2264ML0121141200805116C00_DRCL_pds3.lbl
@@ -0,0 +1,491 @@
+PDS_VERSION_ID                    = PDS3
+
+/* FILE DATA ELEMENTS */
+
+RECORD_TYPE                         = FIXED_LENGTH
+RECORD_BYTES                        = 1338
+FILE_RECORDS                        = 3579
+
+/* Pointers to Data Objects */
+
+^IMAGE = ("2264ML0121141200805116C00_DRCL.IMG")
+
+
+/* Identification Data Elements */
+
+MSL:ACTIVE_FLIGHT_STRING_ID         = "A"
+DATA_SET_ID                         = "MSL-M-MASTCAM-4-RDR-IMG-V1.0"
+DATA_SET_NAME                       = "MSL MARS MAST CAMERA 4 RDR IMAGE V1.0"
+COMMAND_SEQUENCE_NUMBER             = 120
+GEOMETRY_PROJECTION_TYPE            = RAW
+IMAGE_ID                            = "2264ML0121141200805116C00"
+IMAGE_TYPE                          = REGULAR
+MSL:IMAGE_ACQUIRE_MODE              = IMAGE
+INSTRUMENT_HOST_ID                  = MSL
+INSTRUMENT_HOST_NAME                = "MARS SCIENCE LABORATORY"
+INSTRUMENT_ID                       = MAST_LEFT
+INSTRUMENT_NAME                     = "MAST CAMERA LEFT"
+INSTRUMENT_SERIAL_NUMBER            = "3003"
+FLIGHT_SOFTWARE_VERSION_ID          = "1105031458"
+INSTRUMENT_TYPE                     = "IMAGING CAMERA"
+INSTRUMENT_VERSION_ID               = FM
+MSL:LOCAL_MEAN_SOLAR_TIME           = "Sol-02264M16:27:02.729"
+LOCAL_TRUE_SOLAR_TIME               = "15:40:52"
+MISSION_NAME                        = "MARS SCIENCE LABORATORY"
+MISSION_PHASE_NAME                  = "EXTENDED SURFACE MISSION"
+OBSERVATION_ID                      = "NULL"
+PLANET_DAY_NUMBER                   = 2264
+INSTITUTION_NAME                    = "MALIN SPACE SCIENCE SYSTEMS"
+PRODUCT_CREATION_TIME               = 2019-06-01T08:10:50.780
+PRODUCT_VERSION_ID                  = "V1.0"
+PRODUCT_ID                          = "2264ML0121141200805116C00_DRCL"
+SOURCE_PRODUCT_ID                   = "McamLImage_0598492579-48548-1"
+MSL:INPUT_PRODUCT_ID                = "2264ML0121141200805116C00_DXXX"
+MSL:CALIBRATION_FILE_NAME           = "N/A"
+RELEASE_ID                          = "0021"
+MSL:REQUEST_ID                      = "2012114120"
+MSL:CAMERA_PRODUCT_ID               = "5116"
+MSL:CAMERA_PRODUCT_ID_COUNT         = 8
+ROVER_MOTION_COUNTER_NAME           = ("SITE", "DRIVE", "POSE", 
+                                       "ARM", "CHIMRA", "DRILL", 
+                                       "RSM", "HGA", 
+                                       "DRT", "IC")
+ROVER_MOTION_COUNTER                = (73, 1206, 
+                                       52, 798, 
+                                       0, 2338, 
+                                       892, 582, 
+                                       0, 6 )
+SEQUENCE_ID                         = "mcam12114"
+SEQUENCE_VERSION_ID                 = "0"
+SOLAR_LONGITUDE                     = 309.155
+SPACECRAFT_CLOCK_CNT_PARTITION      = 1
+SPACECRAFT_CLOCK_START_COUNT        = "598492579.0000"
+SPACECRAFT_CLOCK_STOP_COUNT         = "598492579.0112"
+IMAGE_TIME                          = 2018-12-19T12:30:00.252
+START_TIME                          = 2018-12-19T12:30:00.252
+STOP_TIME                           = 2018-12-19T12:30:00.423
+TARGET_NAME                         = "MARS"
+TARGET_TYPE                         = "PLANET"
+
+/* Telemetry Data Elements */
+
+APPLICATION_PROCESS_ID              = 406
+APPLICATION_PROCESS_NAME            = McamLImage
+EARTH_RECEIVED_START_TIME           = 2018-12-23T07:10:30
+SPICE_FILE_NAME                     = "mmm_chronos_v02.tm"
+TELEMETRY_PROVIDER_ID               = "NULL"
+MSL:TELEMETRY_SOURCE_HOST_NAME      = "NULL"
+TELEMETRY_SOURCE_NAME               = "McamLImage_0598492579-48548-1"
+TELEMETRY_SOURCE_TYPE               = "DATA PRODUCT"
+MSL:COMMUNICATION_SESSION_ID        = "42680"
+MSL:PRODUCT_COMPLETION_STATUS       = COMPLETE_CHECKSUM_PASS
+MSL:SEQUENCE_EXECUTION_COUNT        = 1
+MSL:TELEMETRY_SOURCE_START_TIME     = 2018-12-19T12:30:01
+MSL:TELEMETRY_SOURCE_SCLK_START     = "1/598492579-48548"
+
+
+/* History Data Elements */
+
+GROUP                               = PDS_HISTORY_PARMS
+ SOFTWARE_NAME                       = MMMRDRGEN
+ SOFTWARE_VERSION_ID                 = "pds16.0"
+ PROCESSING_HISTORY_TEXT             = "CODMAC LEVEL 1 to LEVEL 4 
+                                        CONVERSION VIA MSSS MMMRDRGEN"
+END_GROUP                           = PDS_HISTORY_PARMS
+
+/* Camera Model Data Elements */
+
+GROUP                              = GEOMETRIC_CAMERA_MODEL_PARMS
+ ^MODEL_DESC                         = "GEOMETRIC_CM.TXT"
+ FILTER_NAME                         = MASTCAM_L0_CLEAR
+ MODEL_TYPE                          = CAHV
+ MODEL_COMPONENT_ID                  = ("C","A","H","V")
+ MODEL_COMPONENT_NAME                = ("CENTER", "AXIS", 
+                                        "HORIZONTAL", "VERTICAL")
+ MODEL_COMPONENT_1                   = ( 7.820476e-01, 4.215647e-01,
+-1.967798e+00 )
+ MODEL_COMPONENT_2                   = ( 4.654729e-01, -1.921365e-01,
+8.639552e-01 )
+ MODEL_COMPONENT_3                   = ( 2.249626e+03, 4.087266e+03,
+4.836099e+02 )
+ MODEL_COMPONENT_4                   = ( -3.356067e+03, 1.607817e+03,
+2.832301e+03 )
+ REFERENCE_COORD_SYSTEM_NAME         = ROVER_NAV_FRAME
+ COORDINATE_SYSTEM_INDEX_NAME        = ("SITE", "DRIVE", "POSE",
+                                        "ARM", "CHIMRA", "DRILL",
+                                        "RSM", "HGA",
+                                        "DRT", "IC")
+ REFERENCE_COORD_SYSTEM_INDEX        = (73, 1206, 52, 
+                                        798, 0, 2338, 
+                                        892, 582, 
+                                        0, 6 )
+END_GROUP                          = GEOMETRIC_CAMERA_MODEL_PARMS
+
+
+/* Coordinate System State: Rover */
+
+GROUP                              = ROVER_COORDINATE_SYSTEM_PARMS
+ MSL:SOLUTION_ID                     = telemetry
+ COORDINATE_SYSTEM_NAME              = ROVER_NAV_FRAME
+ COORDINATE_SYSTEM_INDEX_NAME        = ("SITE", "DRIVE", "POSE",
+                                        "ARM", "CHIMRA", "DRILL",
+                                        "RSM", "HGA",
+                                        "DRT", "IC")
+ COORDINATE_SYSTEM_INDEX             = (73, 1206, 52, 
+                                        798, 0, 2338, 
+                                        892, 582, 
+                                        0, 6 )
+ ORIGIN_OFFSET_VECTOR                = (-47.668037, -5.909369, -6.293979)
+ ORIGIN_ROTATION_QUATERNION          = (0.3545804, 
+                                        0.0304361, 
+                                        -0.0007603, 
+                                        -0.9345297)
+ POSITIVE_AZIMUTH_DIRECTION          = CLOCKWISE
+ POSITIVE_ELEVATION_DIRECTION        = UP
+ QUATERNION_MEASUREMENT_METHOD       = TILT_ONLY
+ REFERENCE_COORD_SYSTEM_NAME         = SITE_FRAME
+END_GROUP                          = ROVER_COORDINATE_SYSTEM_PARMS
+
+
+/* Coordinate System State: Remote Sensing Mast */
+
+GROUP                              = RSM_COORDINATE_SYSTEM_PARMS
+ MSL:SOLUTION_ID                     = telemetry
+ COORDINATE_SYSTEM_NAME              = RSM_HEAD_FRAME
+ COORDINATE_SYSTEM_INDEX_NAME        = ("SITE", "DRIVE", "POSE",
+                                        "ARM", "CHIMRA", "DRILL",
+                                        "RSM", "HGA",
+                                        "DRT", "IC")
+ COORDINATE_SYSTEM_INDEX             = (73, 1206, 52, 
+                                        798, 0, 2338, 
+                                        892, 582, 
+                                        0, 6 )
+ ORIGIN_OFFSET_VECTOR                = (0.804374, 0.559484, -1.906076)
+ ORIGIN_ROTATION_QUATERNION          = ( 0.8446875,
+                                         -0.1089795,
+                                         -0.4873414,
+                                         -0.1926783)
+ POSITIVE_AZIMUTH_DIRECTION          = CLOCKWISE
+ POSITIVE_ELEVATION_DIRECTION        = UP
+ REFERENCE_COORD_SYSTEM_NAME         = ROVER_NAV_FRAME
+END_GROUP                          = RSM_COORDINATE_SYSTEM_PARMS
+
+/* Coordinate System State: Robotic Arm */
+
+GROUP                              = ARM_COORDINATE_SYSTEM_PARMS
+ MSL:SOLUTION_ID                     = telemetry
+ COORDINATE_SYSTEM_NAME              = ARM_DRILL_FRAME
+ COORDINATE_SYSTEM_INDEX_NAME        = ("SITE", "DRIVE", "POSE",
+                                        "ARM", "CHIMRA", "DRILL",
+                                        "RSM", "HGA",
+                                        "DRT", "IC")
+ COORDINATE_SYSTEM_INDEX             = (73, 1206, 52, 
+                                        798, 0, 2338, 
+                                        892, 582, 0, 6 )
+ ORIGIN_OFFSET_VECTOR                = (0.238353, -0.923706, -0.165335)
+ ORIGIN_ROTATION_QUATERNION          = ( 0.1586527,
+                                         0.5402789,
+                                         0.3604649,
+                                         0.7436351)
+ POSITIVE_AZIMUTH_DIRECTION          = CLOCKWISE
+ POSITIVE_ELEVATION_DIRECTION        = UP
+ REFERENCE_COORD_SYSTEM_NAME         = ROVER_NAV_FRAME
+END_GROUP                          = ARM_COORDINATE_SYSTEM_PARMS
+
+/* Articulation Device State: Remote Sensing Mast */
+
+GROUP                              = RSM_ARTICULATION_STATE_PARMS
+ ARTICULATION_DEVICE_ID              = RSM
+ ARTICULATION_DEVICE_NAME            = "REMOTE SENSING MAST"
+ ARTICULATION_DEVICE_ANGLE_NAME      = ("AZIMUTH-MEASURED", 
+                                        "ELEVATION-MEASURED",
+                                        "AZIMUTH-REQUESTED", 
+                                        "ELEVATION-REQUESTED",
+                                        "AZIMUTH-INITIAL", 
+                                        "ELEVATION-INITIAL",
+                                        "AZIMUTH-FINAL", 
+                                        "ELEVATION-FINAL")
+ ARTICULATION_DEVICE_ANGLE           = ( 2.719078 <rad>, 0.542313 <rad>,
+                                         2.721545 <rad>, 0.546319 <rad>,
+                                         3.090580 <rad>, 0.546359 <rad>,
+                                         2.721491 <rad>, 0.546236 <rad> )
+ ARTICULATION_DEVICE_MODE            = DEPLOYED
+END_GROUP                          = RSM_ARTICULATION_STATE_PARMS
+
+
+/* Articulation Device State: Robotic Arm */
+
+GROUP                              = ARM_ARTICULATION_STATE_PARMS
+ ARTICULATION_DEVICE_ID              = ARM
+ ARTICULATION_DEVICE_NAME            = "SAMPLE ARM"
+ ARTICULATION_DEVICE_ANGLE_NAME      = ("JOINT 1 AZIMUTH-ENCODER",
+                                        "JOINT 2 ELEVATION-ENCODER",
+                                        "JOINT 3 ELBOW-ENCODER",
+                                        "JOINT 4 WRIST-ENCODER",
+                                        "JOINT 5 TURRET-ENCODER",
+                                        "JOINT 1 AZIMUTH-RESOLVER",
+                                        "JOINT 2 ELEVATION-RESOLVER",
+                                        "JOINT 3 ELBOW-RESOLVER",
+                                        "JOINT 4 WRIST-RESOLVER",
+                                        "JOINT 5 TURRET-RESOLVER")
+ ARTICULATION_DEVICE_ANGLE           = ( 0.799985 <rad>,
+                                         -1.570999 <rad>,
+                                         -1.500003 <rad>,
+                                         1.678171 <rad>,
+                                         2.761113 <rad>,
+                                         0.797107 <rad>,
+                                         -1.576209 <rad>,
+                                         -1.506384 <rad>,
+                                         1.673409 <rad>,
+                                         2.760045 <rad> )
+ ARTICULATION_DEVICE_MODE            = "FREE SPACE"
+ ARTICULATION_DEVICE_TEMP_NAME       = ("AZIMUTH JOINT",
+                                        "ELEVATION JOINT", 
+                                        "ELBOW JOINT", 
+                                        "WRIST JOINT", 
+                                        "TURRET JOINT")
+ ARTICULATION_DEVICE_TEMP            = ( -2.5942 <degC>, 
+                                         6.2186 <degC>, 
+                                         5.1346 <degC>, 
+                                         5.3563 <degC>, 
+                                         6.0723 <degC> )
+ CONTACT_SENSOR_STATE_NAME           = ( "APXS CONTACT SWITCH 1", 
+                                         "APXS CONTACT SWITCH 2",
+                                         "DRILL SWITCH 1", "DRILL SWITCH 2",
+                                         "MAHLI SWITCH 1A", 
+                                         "MAHLI SWITCH 1B",
+                                         "MAHLI SWITCH 2A", 
+                                         "MAHLI SWITCH 2B" )
+ CONTACT_SENSOR_STATE                = ( "NO CONTACT","NO CONTACT","NO
+CONTACT","NO CONTACT","NO CONTACT","NO CONTACT","NO CONTACT","NO CONTACT" )
+
+ ARTICULATION_DEV_VECTOR            = ( -0.056348, 0.023005, 0.998146)
+ ARTICULATION_DEV_VECTOR_NAME        = "GRAVITY"
+ ARTICULATION_DEV_INSTRUMENT_ID      = "DRILL"
+END_GROUP                         = ARM_ARTICULATION_STATE_PARMS
+
+/* Articulation Device State: Mobility Chassis */
+
+GROUP                              = CHASSIS_ARTICULATION_STATE_PARMS
+ ARTICULATION_DEVICE_ID              = CHASSIS
+ ARTICULATION_DEVICE_NAME            = "MOBILITY CHASSIS"
+ ARTICULATION_DEVICE_ANGLE_NAME      = ("LEFT FRONT WHEEL", 
+                                        "RIGHT FRONT WHEEL", 
+                                        "LEFT REAR WHEEL", 
+                                        "RIGHT REAR WHEEL", 
+                                        "LEFT BOGIE", 
+                                        "RIGHT BOGIE", 
+                                        "LEFT DIFFERENTIAL", 
+                                        "RIGHT DIFFERENTIAL")
+ ARTICULATION_DEVICE_ANGLE           = ( -0.000000 <rad>, -0.000000 <rad>,
+-0.000128 <rad>, -0.000128 <rad>,
+                                         -0.022178 <rad>, -0.003453 <rad>,
+                                         -0.004218 <rad>, 0.003101 <rad> )
+ ARTICULATION_DEVICE_MODE            = DEPLOYED
+END_GROUP                          = CHASSIS_ARTICULATION_STATE_PARMS
+
+
+/* Articulation Device State: High Gain Antenna */
+
+GROUP                              = HGA_ARTICULATION_STATE_PARMS
+ ARTICULATION_DEVICE_ID              = HGA
+ ARTICULATION_DEVICE_NAME            = "HIGH GAIN ANTENNA"
+ ARTICULATION_DEVICE_ANGLE_NAME      = ("AZIMUTH", "ELEVATION")
+ ARTICULATION_DEVICE_ANGLE           = ( 0.000011 <rad>, -0.785064 <rad> )
+ ARTICULATION_DEVICE_MODE            = "DEPLOYED"
+END_GROUP                          = HGA_ARTICULATION_STATE_PARMS
+
+
+/* Coordinate System State: Site */
+
+GROUP                              = SITE_COORDINATE_SYSTEM_PARMS
+ COORDINATE_SYSTEM_NAME              = SITE_FRAME
+ COORDINATE_SYSTEM_INDEX_NAME        = ("SITE" )
+ COORDINATE_SYSTEM_INDEX             = (73 )
+ ORIGIN_OFFSET_VECTOR                = (-120.137383, -115.454124, -9.943598 )
+ ORIGIN_ROTATION_QUATERNION          = (1.0000000,
+                                        0.0000000,
+                                        0.0000000,
+                                        0.0000000 )
+ POSITIVE_AZIMUTH_DIRECTION          = CLOCKWISE
+ POSITIVE_ELEVATION_DIRECTION        = UP
+ REFERENCE_COORD_SYSTEM_NAME         = SITE_FRAME
+END_GROUP                          = SITE_COORDINATE_SYSTEM_PARMS
+
+
+/* Observation Request */
+
+GROUP                              = OBSERVATION_REQUEST_PARMS
+ COMMAND_INSTRUMENT_ID               = MAST_LEFT
+ RATIONALE_DESC                      = "Periodic documentation of the terrain
+along the traverse"
+END_GROUP                          = OBSERVATION_REQUEST_PARMS
+
+
+/* Image Request */
+
+GROUP                              = IMAGE_REQUEST_PARMS
+ FIRST_LINE                          = 17
+ FIRST_LINE_SAMPLE                   = 161
+ LINES                               = 1184
+ LINE_SAMPLES                        = 1328
+ EXPOSURE_TYPE                       = MANUAL
+ EXPOSURE_DURATION                   = "NULL"
+ INST_CMPRS_MODE                     = 1
+ INST_CMPRS_NAME                     = "PREDICTIVE LOSSLESS BAYER HUFFMAN
+ENCODING"
+ INST_CMPRS_QUALITY                  = "N/A"
+ AUTO_EXPOSURE_DATA_CUT              = 150
+ AUTO_EXPOSURE_PERCENT               = 010
+ AUTO_EXPOSURE_PIXEL_FRACTION        = 002
+ MAX_AUTO_EXPOS_ITERATION_COUNT      = 8
+ MSL:AUTO_FOCUS_ZSTACK_FLAG          = FALSE
+ MSL:INSTRUMENT_FOCUS_POSITION_CNT   = 0
+ MSL:INSTRUMENT_FOCUS_STEP_SIZE      = 0
+ MSL:INSTRUMENT_FOCUS_STEPS          = 0
+ FILTER_NAME                         = "MASTCAM_L0_CLEAR"
+ FILTER_NUMBER                       = "0"
+ MSL:INVERSE_LUT_FILE_NAME           = MMM_LUT0
+ FLAT_FIELD_CORRECTION_FLAG          = FALSE
+END_GROUP                          = IMAGE_REQUEST_PARMS
+
+
+/* Video Request */
+
+GROUP                              = VIDEO_REQUEST_PARMS
+ GROUP_APPLICABILITY_FLAG            = FALSE
+ MSL:COMMANDED_VIDEO_FRAMES          = "N/A"
+ INTERFRAME_DELAY                    = "N/A"
+END_GROUP                          = VIDEO_REQUEST_PARMS
+
+/* ZStack Request */
+
+GROUP                              = ZSTACK_REQUEST_PARMS
+ GROUP_APPLICABILITY_FLAG            = FALSE
+ MSL:ZSTACK_IMAGE_DEPTH               = "N/A"
+ MSL:IMAGE_BLENDING_FLAG              = "N/A"
+ MSL:IMAGE_REGISTRATION_FLAG          = "N/A"
+END_GROUP                          = ZSTACK_REQUEST_PARMS
+
+
+/* Instrument State Results */
+
+GROUP                              = INSTRUMENT_STATE_PARMS
+ HORIZONTAL_FOV                      = 16.2823
+ VERTICAL_FOV                        = 14.5366
+ DETECTOR_FIRST_LINE                 = 1
+ DETECTOR_LINES                      = 1200
+ MSL:DETECTOR_SAMPLES                = 1648
+ DETECTOR_TO_IMAGE_ROTATION          = 0.0
+ EXPOSURE_DURATION                   = 11.2 <ms>
+ FILTER_NAME                         = MASTCAM_L0_CLEAR
+ FILTER_NUMBER                       = "0"
+ CENTER_FILTER_WAVELENGTH            = 590 <nm> 
+ FLAT_FIELD_CORRECTION_FLAG          = FALSE
+ MSL:INSTRUMENT_CLOCK_START_COUNT    = "598492579.0000"
+ MSL:SENSOR_READOUT_RATE             = 10 <MHz>
+ INSTRUMENT_TEMPERATURE_NAME         = ( "DEA_TEMP", "FPA_TEMP",
+                                         "OPTICS_TEMP", "ELECTRONICS",
+                                         "ELECTRONICS_A", "ELECTRONICS_B" )
+ INSTRUMENT_TEMPERATURE              = ( 30.4244 <degC>, 
+                                         -0.2124 <degC>, 
+                                         -3.3410 <degC>, 
+                                         -3.4016 <degC>,
+                                         "NULL",
+                                         "NULL" )
+ MSL:INSTRUMENT_TEMPERATURE_STATUS   = ( 0, 
+                                         0, 
+                                         0, 
+                                         0,
+                                         "UNK", 
+                                         "UNK" )
+ SAMPLE_BIT_METHOD                   = "HARDWARE"
+ SAMPLE_BIT_MODE_ID                  = MMM_LUT0
+ MSL:FOCUS_POSITION_COUNT            = 2238
+ MSL:FILTER_POSITION_COUNT           = 0
+ MSL:COVER_HALL_SENSOR_FLAG          = "N/A"
+ MSL:FILTER_HALL_SENSOR_FLAG         = 0
+ MSL:FOCUS_HALL_SENSOR_FLAG          = 1
+ MSL:LED_STATE_NAME                  = ("VIS1", "VIS2", "UV")
+ MSL:LED_STATE_FLAG                  = ( "N/A", "N/A", "N/A" )
+ DETECTOR_ERASE_COUNT                = 4094
+END_GROUP                          = INSTRUMENT_STATE_PARMS
+
+
+/* Image Data Elements */
+
+GROUP                              = IMAGE_PARMS
+ INST_CMPRS_MODE                     = 1
+ INST_CMPRS_NAME                     = "PREDICTIVE LOSSLESS BAYER HUFFMAN
+ENCODING"
+ INST_CMPRS_QUALITY                  = "N/A"
+ MSL:INVERSE_LUT_FILE_NAME           = MMM_LUT0
+ PIXEL_AVERAGING_HEIGHT              = 1
+ PIXEL_AVERAGING_WIDTH               = 1
+END_GROUP                          = IMAGE_PARMS
+
+/* Video Data Elements */
+
+GROUP                              = VIDEO_PARMS
+ GROUP_APPLICABILITY_FLAG            = FALSE
+ MSL:GOP_FRAME_INDEX                 = "N/A"
+ MSL:GOP_TOTAL_FRAMES                = "N/A"
+END_GROUP                          = VIDEO_PARMS
+
+
+/* Derived Data Elements */
+
+GROUP                              = DERIVED_IMAGE_PARMS
+ MSL:INFINITY_CONSTANT               = 999999
+ MSL:COVER_STATE_FLAG                = "N/A"
+ MSL:MINIMUM_FOCUS_DISTANCE          = 1.3 <m>
+ MSL:BEST_FOCUS_DISTANCE             = 1.952 <m>
+ MSL:MAXIMUM_FOCUS_DISTANCE          = 3.6 <m>
+ MSL:FRAME_RATE                      = "N/A"
+ FIXED_INSTRUMENT_AZIMUTH            = 199.1465
+ FIXED_INSTRUMENT_ELEVATION          = -56.2743
+ SOLAR_AZIMUTH                       = 249.8022
+ SOLAR_ELEVATION                     = 34.3177
+END_GROUP                          = DERIVED_IMAGE_PARMS
+
+/* Processing Data Elements */
+GROUP                             = PROCESSING_PARMS
+ DARK_LEVEL_CORRECTION               = 121.4
+ SHUTTER_EFFECT_CORRECTION_FLAG      = FALSE
+ RADIOMETRIC_CORRECTION_TYPE         = "N/A"
+ RADIANCE_OFFSET                     = ( "N/A", 
+                                         "N/A", 
+                                         "N/A" )
+ RADIANCE_SCALING_FACTOR             = ( "N/A", 
+                                         "N/A", 
+                                         "N/A" )
+ FLAT_FIELD_CORRECTION_FLAG          = FALSE
+END_GROUP                         = PROCESSING_PARMS
+
+/* PRIMARY DATA OBJECT */
+
+/* IMAGE DATA ELEMENTS */
+
+OBJECT                            = IMAGE
+  INTERCHANGE_FORMAT              = BINARY
+  LINES                           = 1193
+  LINE_SAMPLES                    = 1338
+  SAMPLE_TYPE                     = UNSIGNED_INTEGER
+  SAMPLE_BITS                     = 8
+  BANDS                           = 3
+  BAND_STORAGE_TYPE               = BAND_SEQUENTIAL
+  FIRST_LINE                      = 17
+  FIRST_LINE_SAMPLE               = 161
+  INVALID_CONSTANT                = 255
+  MINIMUM                         = "NULL"
+  MAXIMUM                         = "NULL"
+  MEAN                            = "NULL"
+  MEDIAN                          = "NULL"
+  STANDARD_DEVIATION              = "NULL"
+  MISSING_CONSTANT                = 255
+  SAMPLE_BIT_MASK                 = 2#11111111#
+  SAMPLE_BIT_MODE_ID              = MMM_LUT0
+  SAMPLE_BIT_METHOD               = "HARDWARE"
+END_OBJECT                        = IMAGE
+
+END
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/MSL_76_SCLKSCET.00019.tsc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/MSL_76_SCLKSCET.00019.tsc
new file mode 100755
index 0000000000000000000000000000000000000000..38bae16b466ba3669a41bf4b39815324caab0c22
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/MSL_76_SCLKSCET.00019.tsc
@@ -0,0 +1,210 @@
+KPL/SCLK
+
+
+MSL SCLK File
+===========================================================================
+
+     This file is a SPICE spacecraft clock (SCLK) kernel containing
+     information required for MSL spacecraft on-board clock to UTC
+     conversion.
+
+
+Production/History of this SCLK file
+--------------------------------------------------------
+
+     This file was generated by the NAIF utility program MAKCLK, version
+     3.5.2, from the most recent MSL spacecraft SCLKvSCET file (see
+     corresponding sections of these comments for a copy of the source
+     SCLKvSCET file and MAKCLK setup file).
+
+
+Usage
+--------------------------------------------------------
+
+     This file must be loaded into the user's program by a call to the
+     FURNSH subroutine
+
+          CALL FURNSH( 'this_file_name' )
+
+     in order to use the SPICELIB SCLK family of subroutines to convert
+     MSL spacecraft on-board clock to ET and vice versa.
+
+
+SCLK Format
+--------------------------------------------------------
+
+     The on-board clock, the conversion for which is provided by this SCLK
+     file, consists of two fields:
+
+          SSSSSSSSSS-FFFFF
+
+     where:
+
+          SSSSSSSSSS -- count of on-board seconds
+
+          FFFFF      -- count of fractions of a second with one fraction
+                        being 1/65536 of a second; normally this field value
+                        is within 0..65535 range.
+
+
+References
+--------------------------------------------------------
+
+         1.   SCLK Required Reading Document
+
+         2.   MAKCLK User's Guide Document
+
+         3.   SFOC SCLKvSCET SIS Document
+
+
+Inquiries
+--------------------------------------------------------
+
+     If you have any questions regarding this file contact NAIF  at JPL
+
+           Charles H. Acton, Jr
+           (818) 354-3869
+           Chuck.Acton@jpl.nasa.gov
+
+           Boris V. Semenov
+           (818) 354-8136
+           Boris.Semenov@jpl.nasa.gov
+
+
+Source SCLKvSCET File
+--------------------------------------------------------
+
+     CCSD3ZS00001$$sclk$$NJPL3KS0L015$$scet$$
+     MISSION_NAME=MSL;
+     SPACECRAFT_NAME=MARS_SCIENCE_LABORATORY;
+     DATA_SET_ID=SCLK_SCET;
+     FILE_NAME=MSL_76_SCLKSCET.00019;
+     PRODUCT_CREATION_TIME=2022-229T12:27:15.000;
+     PRODUCT_VERSION_ID=00019;
+     PRODUCER_ID=DSMS_TIME_SERVICES;
+     APPLICABLE_START_TIME=2022-230T00:00:00.000;
+     APPLICABLE_STOP_TIME=2023-358T15:16:11.000;
+     MISSION_ID=33;
+     SPACECRAFT_ID=76;
+     CCSD3RE00000$$scet$$NJPL3IS00613$$data$$
+     *____SCLK0_____    ________SCET0___________ _DUT__ __SCLKRATE__
+      0000000000.000    2000-001T11:58:55.816 64.184  1.000000000
+      0189345665.000    2006-001T00:00:00.816 64.184  0.000010000
+      0189345666.000    2006-001T00:00:00.817 65.184  1.000000000
+      0284040066.000    2009-001T00:00:00.815 65.184  0.001000000
+      0284040067.000    2009-001T00:00:00.816 66.184  1.000000000
+      0375075862.000    2011-324T15:43:15.816 66.184  0.995566030
+      0375076862.000    2011-324T15:59:51.382 66.184  1.000007536
+      0375077191.000    2011-324T16:05:20.385 66.184  1.000004134
+      0375078191.000    2011-324T16:22:00.389 66.184  1.000009564
+      0375163622.000    2011-325T16:05:52.206 66.184  0.999958637
+      0375164622.000    2011-325T16:22:32.165 66.184  1.000009114
+      0375235601.000    2011-326T12:05:31.812 66.184  0.999997081
+      0375236601.000    2011-326T12:22:11.809 66.184  1.000009250
+      0375410971.000    2011-328T12:48:23.422 66.184  1.000010108
+      0375411971.000    2011-328T13:05:03.432 66.184  1.000008880
+      0375950039.000    2011-334T18:32:56.210 66.184  0.999889040
+      0375951039.000    2011-334T18:49:36.099 66.184  1.000008973
+      0380648630.000    2012-024T03:43:29.250 66.184  1.000550348
+      0380649630.000    2012-024T04:00:09.801 66.184  1.000009187
+      0392778715.000    2012-164T13:13:26.231 66.184  0.996915113
+      0392779715.000    2012-164T13:30:03.146 66.184  1.000009272
+      0394372698.000    2012-183T00:00:00.916 66.184  0.001000000
+      0394372699.000    2012-183T00:00:00.917 67.184  1.000009272
+      0396387693.000    2012-206T07:43:33.600 67.184  0.999848543
+      0396388693.000    2012-206T08:00:13.449 67.184  1.000009275
+      0434589485.000    2013-282T11:25:59.761 67.184  1.001583303
+      0434590485.000    2013-282T11:42:41.345 67.184  1.000009438
+      0488979811.000    2015-182T00:00:00.669 67.184  0.001000000
+      0488979812.000    2015-182T00:00:00.670 68.184  1.000009438
+      0536499363.000    2017-001T00:00:00.159 68.184  0.001000000
+      0536499364.000    2017-001T00:00:00.160 69.184  1.000009438
+      0626394666.000    2019-311T11:09:10.592 69.184  1.003346471
+      0626395666.000    2019-311T11:25:53.938 69.184  1.000009575
+      0655335115.000    2020-281T10:14:40.033 69.184  0.996931000
+      0655336115.000    2020-281T10:31:16.964 69.184  1.000009464
+      0707809507.000    2022-157T18:36:05.572 69.184  0.999115094
+      0707810507.000    2022-157T18:52:44.687 69.184  1.000007602
+      0709438101.000    2022-176T14:59:31.061 69.184  1.000009738
+      0709439101.000    2022-176T15:16:11.071 69.184  1.000007639
+      0713969869.000    2022-229T01:49:33.682 69.184  1.000007639
+      0713970869.000    2022-229T02:06:13.689 69.184  1.000009464
+     CCSD3RE00000$$data$$CCSD3RE00000$$sclk$$
+     
+
+
+MAKCLK Setup file
+--------------------------------------------------------
+
+     SCLKSCET_FILE          = MSL_76_SCLKSCET.00019.clean
+     OLD_SCLK_KERNEL        = /ods/cedl/strategic/naif/misc/work/sclkscet/msl_template.tsc
+     FILE_NAME              = MSL_76_SCLKSCET.00019.tsc
+     NAIF_SPACECRAFT_ID     = -76
+     LEAPSECONDS_FILE       = /ods/cedl/strategic/naif/kernels/lsk/msl.tls
+     PARTITION_TOLERANCE    = 2560
+     LOG_FILE               = MSL_76_SCLKSCET.00019.log
+     
+
+
+Kernel DATA
+--------------------------------------------------------
+
+\begindata
+
+
+SCLK_KERNEL_ID           = ( @2022-08-18/20:50:01.82 )
+
+SCLK_DATA_TYPE_76        = ( 1 )
+SCLK01_TIME_SYSTEM_76    = ( 2 )
+SCLK01_N_FIELDS_76       = ( 2 )
+SCLK01_MODULI_76         = ( 4294967296 65536 )
+SCLK01_OFFSETS_76        = ( 0 0 )
+SCLK01_OUTPUT_DELIM_76   = ( 3 )
+
+SCLK_PARTITION_START_76  = ( 0.0000000000000E+00 )
+
+SCLK_PARTITION_END_76    = ( 2.8147497671065E+14 )
+
+SCLK01_COEFFICIENTS_76   = (
+ 
+    0.0000000000000E+00     -3.5763036976277E-10     1.0000000000053E+00
+    1.2408957566976E+13     1.8934566600100E+08     9.9999999998944E-01
+    1.8614849830912E+13     2.8404006700000E+08     1.0000000000000E+00
+    2.4580971692032E+13     3.7507586200000E+08     9.9556599998474E-01
+    2.4581037228032E+13     3.7507685756600E+08     1.0000091186048E+00
+    2.4581058789376E+13     3.7507718656900E+08     1.0000040000081E+00
+    2.4581124325376E+13     3.7507818657300E+08     1.0000095632730E+00
+    2.4586723131392E+13     3.7516361839000E+08     9.9995900005102E-01
+    2.4586788667392E+13     3.7516461834900E+08     1.0000091153724E+00
+    2.4591440347136E+13     3.7523559799600E+08     9.9999699997902E-01
+    2.4591505883136E+13     3.7523659799300E+08     1.0000092504443E+00
+    2.4602933395456E+13     3.7541096960600E+08     1.0000099999905E+00
+    2.4602998931456E+13     3.7541196961600E+08     1.0000088799185E+00
+    2.4638261755904E+13     3.7595004239400E+08     9.9988899999857E-01
+    2.4638327291904E+13     3.7595104228300E+08     1.0000089728970E+00
+    2.4946188615680E+13     3.8064867543400E+08     1.0005509999990E+00
+    2.4946254151680E+13     3.8064967598500E+08     1.0000091870079E+00
+    2.5741145866240E+13     3.9277887241500E+08     9.9691500002146E-01
+    2.5741211402240E+13     3.9277986933000E+08     1.0000092725350E+00
+    2.5845609201664E+13     3.9437286810100E+08     1.0000092719879E+00
+    2.5977663848448E+13     3.9638788078400E+08     9.9984899997711E-01
+    2.5977729384448E+13     3.9638888063300E+08     1.0000092749909E+00
+    2.8481256488960E+13     4.3459002694500E+08     1.0015840000510E+00
+    2.8481322024960E+13     4.3459102852900E+08     1.0000094379730E+00
+    3.2045780959232E+13     4.8898086885400E+08     1.0000094380099E+00
+    3.5160022319104E+13     5.3650086934400E+08     1.0000094380016E+00
+    4.1051400830976E+13     6.2639701977600E+08     1.0033459999561E+00
+    4.1051466366976E+13     6.2639802312200E+08     1.0000095749923E+00
+    4.2948042096640E+13     6.5533774921700E+08     9.9693099999428E-01
+    4.2948107632640E+13     6.5533874614800E+08     1.0000094639965E+00
+    4.6387003850752E+13     7.0781263475600E+08     9.9911500000954E-01
+    4.6387069386752E+13     7.0781363387100E+08     1.0000076026331E+00
+    4.6493735387136E+13     7.0944124024500E+08     1.0000099999905E+00
+    4.6493800923136E+13     7.0944224025500E+08     1.0000076391023E+00
+    4.6790729334784E+13     7.1397304286600E+08     1.0000069999695E+00
+    4.6790794870784E+13     7.1397404287300E+08     1.0000094640000E+00 )
+
+\begintext
+
+
+
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_ml_20120731_c03.ti b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_ml_20120731_c03.ti
new file mode 100755
index 0000000000000000000000000000000000000000..7af78e46030593640f0371b52cbfd357a9cb7beb
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_ml_20120731_c03.ti
@@ -0,0 +1,177 @@
+KPL/IK
+
+MSL_MASTCAM_LEFT Instrument Kernel
+==============================================================================
+
+
+Version and Date
+----------------------------------------------------------
+
+   Tue Jul 31 15:46:20 PDT 2012
+
+
+Pedigree
+----------------------------------------------------------
+
+   This IK was generated by a script. All nominal parameters provided
+   in this IK were obtained from the camera CDR materials; all actual
+   parameters were copied/derived from the camera CAHVOR(E) model file
+   'MSL_CAL_003_SN_3003_FILTER_0_FOCUS_02315-MCAML-FLIGHT.cahvor'.
+
+
+Camera CCD Dimensions
+----------------------------------------------------------
+
+   The camera CCD dimensions are provided in the keywords below. The
+   pixels are numbered left-to-right, top-to-bottom with the top-left
+   pixel indexed (0,0).
+
+   \begindata
+
+      INS-76210_FOV_CENTER_PIXEL      = ( 823.5, 599.5 )
+      INS-76210_PIXEL_SAMPLES         = ( 1648 )
+      INS-76210_PIXEL_LINES           = ( 1200 )
+
+   \begintext
+
+
+Camera Boresight and Distortion Center Locations
+----------------------------------------------------------
+
+   The camera boresight and distortion center locations in pixel
+   coordinates, computed from the model data using these formulas:
+
+      boresight sample  =  H dot A
+      boresight line    =  V dot A
+      distortion sample = (O dot H) / (O dot A)
+      distortion line   = (O dot V) / (O dot A)
+
+   are:
+
+   \begindata
+
+      INS-76210_BORESIGHT_PIXEL       = ( 829.18782212, 601.33514402 )
+      INS-76210_DISTORTION_PIXEL      = ( 837.77915717, 592.14046615 )
+
+   \begintext
+
+
+Nominal Camera Parameters
+----------------------------------------------------------
+
+   The nominal camera focal length and physical pixel size, both in
+   millimeters, along with the nominal pixel IFOV, in degrees, are provided
+   in the keywords below.
+
+   \begindata
+
+      INS-76210_FOCAL_LENGTH          = ( 34 )
+      INS-76210_PIXEL_SIZE            = ( 0.0074 )
+      INS-76210_IFOV_NOMINAL          = (    0.01247026 )
+
+   \begintext
+
+
+Camera FOV Definition
+----------------------------------------------------------
+
+   To better reflect distortion in the camera optics the FOV is defined as
+   a polygonal pyramid with the tip at the camera focal point and the edges
+   along the view directions of the corner pixels and the side-middle pixels.
+   Specifically the boundary vectors provided in the FOV_BOUNDARY
+   keyword corresponds to view directions of the centers of these
+   pixels provided in this order:
+
+                     (    0.0,    0.0 )
+                     (  823.5,    0.0 )
+                     ( 1647.0,    0.0 )
+                     ( 1647.0,  599.5 )
+                     ( 1647.0, 1199.0 )
+                     (  823.5, 1199.0 )
+                     (    0.0, 1199.0 )
+                     (    0.0,  599.5 )
+
+   The boresight direction corresponds to the view direction of the center
+   pixel, (823.5,599.5).
+
+   All directions are unit vectors specified in the 'MSL_MASTCAM_LEFT'
+   frame.
+
+   \begindata
+
+      INS-76210_FOV_FRAME             = ( 'MSL_MASTCAM_LEFT' )
+      INS-76210_FOV_SHAPE             = ( 'POLYGON' )
+      INS-76210_FOV_CLASS_SPEC        = ( 'CORNERS' )
+      INS-76210_BORESIGHT             = (
+                                    -0.00000000  -0.00000000   1.00000000
+                                         )
+      INS-76210_FOV_BOUNDARY          = (
+
+                                     0.17483767   0.12730492   0.97633255
+                                    -0.00000000   0.12834274   0.99172987
+                                    -0.17476887   0.12719345   0.97635940
+                                    -0.17553059  -0.00005566   0.98447398
+                                    -0.17480715  -0.12735688   0.97633124
+                                     0.00001620  -0.12838394   0.99172454
+                                     0.17491070  -0.12728511   0.97632205
+                                     0.17557293   0.00003780   0.98446643
+                                         )
+
+   \begintext
+
+
+Actual Camera IFOV
+----------------------------------------------------------
+
+   The actual average vertical and horizontal pixel IFOVs were computed by
+   dividing the angular extent between the view directions of pixels
+   (823.5,0) and (823.5,1199) for the vertical direction and between
+   (0,599.5) and (1647,599.5) for the horizontal direction by the number
+   of pixels minus 1. The average IFOV is simply an average of the
+   vertical and horizontal IFOVs.
+
+   In the keywords below the IFOVs are provided in degrees.
+
+   \begindata
+
+      INS-76210_IFOV_VERTICAL         = ( 0.01230196 )
+      INS-76210_IFOV_HORIZONTAL       = ( 0.01227780 )
+      INS-76210_IFOV                  = ( 0.01228988 )
+
+   \begintext
+
+
+Source CAHVOR(E) Parameters
+
+   The keywords below contain parameters of the CAHVOR(E) model from
+   which all actual camera parameters provided in this file have been
+   derived. Note that the reference quaternion (CAHVOR_QUAT) is not a
+   SPICE-style but an engineering style quaternion (s1,s2,s3,c.)
+
+   \begindata
+
+      INS-76210_CAHVOR_FILE  = ( 'MSL_CAL_003_SN_3003_FILTER_0_FOCUS_02315-MCAML-FLIGHT.cahvor' )
+      INS-76210_CAHVOR_MODEL = ( ' CAHVOR ' )
+
+      INS-76210_CAHVOR_DIMS  = (  1648 1200 )
+
+      INS-76210_CAHVOR_C     = (       0.767151      0.433709     -1.971648 )
+      INS-76210_CAHVOR_A     = (       0.999664      0.025047      0.006727 )
+      INS-76210_CAHVOR_H     = (     712.373106   4664.465028     33.182389 )
+      INS-76210_CAHVOR_V     = (     570.612488    -14.279011   4648.733195 )
+      INS-76210_CAHVOR_O     = (       0.999627      0.026908      0.004759 )
+      INS-76210_CAHVOR_R     = (      -0.000151     -0.139189     -1.250336 )
+      
+      INS-76210_CAHVOR_HS    = (    4645.242086 )
+      INS-76210_CAHVOR_HC    = (     829.187822 )
+      INS-76210_CAHVOR_VS    = (    4644.882626 )
+      INS-76210_CAHVOR_VC    = (     601.335144 )
+      INS-76210_CAHVOR_THETA = (      -1.571004 )
+
+      INS-76210_CAHVOR_POS   = ( 0.80436 0.55942 -1.90608 )
+
+      INS-76210_CAHVOR_QUAT  = ( 0.00001 -0.00325 -0.00104 0.99999 )
+
+
+   \begintext
+
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_mr_20120731_c03.ti b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_mr_20120731_c03.ti
new file mode 100755
index 0000000000000000000000000000000000000000..c7c36eead1cfd066053196b8c6d92597d3af9bdd
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_mr_20120731_c03.ti
@@ -0,0 +1,177 @@
+KPL/IK
+
+MSL_MASTCAM_RIGHT Instrument Kernel
+==============================================================================
+
+
+Version and Date
+----------------------------------------------------------
+
+   Tue Jul 31 15:46:21 PDT 2012
+
+
+Pedigree
+----------------------------------------------------------
+
+   This IK was generated by a script. All nominal parameters provided
+   in this IK were obtained from the camera CDR materials; all actual
+   parameters were copied/derived from the camera CAHVOR(E) model file
+   'MSL_CAL_003_SN_3004_FILTER_0_FOCUS_02702-MCAMR-FLIGHT.cahvor'.
+
+
+Camera CCD Dimensions
+----------------------------------------------------------
+
+   The camera CCD dimensions are provided in the keywords below. The
+   pixels are numbered left-to-right, top-to-bottom with the top-left
+   pixel indexed (0,0).
+
+   \begindata
+
+      INS-76220_FOV_CENTER_PIXEL      = ( 823.5, 599.5 )
+      INS-76220_PIXEL_SAMPLES         = ( 1648 )
+      INS-76220_PIXEL_LINES           = ( 1200 )
+
+   \begintext
+
+
+Camera Boresight and Distortion Center Locations
+----------------------------------------------------------
+
+   The camera boresight and distortion center locations in pixel
+   coordinates, computed from the model data using these formulas:
+
+      boresight sample  =  H dot A
+      boresight line    =  V dot A
+      distortion sample = (O dot H) / (O dot A)
+      distortion line   = (O dot V) / (O dot A)
+
+   are:
+
+   \begindata
+
+      INS-76220_BORESIGHT_PIXEL       = ( 859.44651228, 534.29411479 )
+      INS-76220_DISTORTION_PIXEL      = ( 767.27622715, 668.16368416 )
+
+   \begintext
+
+
+Nominal Camera Parameters
+----------------------------------------------------------
+
+   The nominal camera focal length and physical pixel size, both in
+   millimeters, along with the nominal pixel IFOV, in degrees, are provided
+   in the keywords below.
+
+   \begindata
+
+      INS-76220_FOCAL_LENGTH          = ( 100 )
+      INS-76220_PIXEL_SIZE            = ( 0.0074 )
+      INS-76220_IFOV_NOMINAL          = (    0.00423989 )
+
+   \begintext
+
+
+Camera FOV Definition
+----------------------------------------------------------
+
+   To better reflect distortion in the camera optics the FOV is defined as
+   a polygonal pyramid with the tip at the camera focal point and the edges
+   along the view directions of the corner pixels and the side-middle pixels.
+   Specifically the boundary vectors provided in the FOV_BOUNDARY
+   keyword corresponds to view directions of the centers of these
+   pixels provided in this order:
+
+                     (    0.0,    0.0 )
+                     (  823.5,    0.0 )
+                     ( 1647.0,    0.0 )
+                     ( 1647.0,  599.5 )
+                     ( 1647.0, 1199.0 )
+                     (  823.5, 1199.0 )
+                     (    0.0, 1199.0 )
+                     (    0.0,  599.5 )
+
+   The boresight direction corresponds to the view direction of the center
+   pixel, (823.5,599.5).
+
+   All directions are unit vectors specified in the 'MSL_MASTCAM_RIGHT'
+   frame.
+
+   \begindata
+
+      INS-76220_FOV_FRAME             = ( 'MSL_MASTCAM_RIGHT' )
+      INS-76220_FOV_SHAPE             = ( 'POLYGON' )
+      INS-76220_FOV_CLASS_SPEC        = ( 'CORNERS' )
+      INS-76220_BORESIGHT             = (
+                                     0.00000000   0.00000000   1.00000000
+                                         )
+      INS-76220_FOV_BOUNDARY          = (
+
+                                     0.06091935   0.04433268   0.99715768
+                                     0.00000000   0.04462814   0.99900367
+                                    -0.06080956   0.04423678   0.99716864
+                                    -0.06106251  -0.00005126   0.99813394
+                                    -0.06083571  -0.04440396   0.99715962
+                                     0.00002390  -0.04469527   0.99900067
+                                     0.06099392  -0.04440530   0.99714989
+                                     0.06117482  -0.00000350   0.99812707
+                                         )
+
+   \begintext
+
+
+Actual Camera IFOV
+----------------------------------------------------------
+
+   The actual average vertical and horizontal pixel IFOVs were computed by
+   dividing the angular extent between the view directions of pixels
+   (823.5,0) and (823.5,1199) for the vertical direction and between
+   (0,599.5) and (1647,599.5) for the horizontal direction by the number
+   of pixels minus 1. The average IFOV is simply an average of the
+   vertical and horizontal IFOVs.
+
+   In the keywords below the IFOVs are provided in degrees.
+
+   \begindata
+
+      INS-76220_IFOV_VERTICAL         = ( 0.00426986 )
+      INS-76220_IFOV_HORIZONTAL       = ( 0.00425504 )
+      INS-76220_IFOV                  = ( 0.00426245 )
+
+   \begintext
+
+
+Source CAHVOR(E) Parameters
+
+   The keywords below contain parameters of the CAHVOR(E) model from
+   which all actual camera parameters provided in this file have been
+   derived. Note that the reference quaternion (CAHVOR_QUAT) is not a
+   SPICE-style but an engineering style quaternion (s1,s2,s3,c.)
+
+   \begindata
+
+      INS-76220_CAHVOR_FILE  = ( 'MSL_CAL_003_SN_3004_FILTER_0_FOCUS_02702-MCAMR-FLIGHT.cahvor' )
+      INS-76220_CAHVOR_MODEL = ( ' CAHVOR ' )
+
+      INS-76220_CAHVOR_DIMS  = (  1648 1200 )
+
+      INS-76220_CAHVOR_C     = (       0.872866      0.677208     -1.970931 )
+      INS-76220_CAHVOR_A     = (       0.999741     -0.022668      0.001764 )
+      INS-76220_CAHVOR_H     = (    1162.600942  13353.117702    -93.448986 )
+      INS-76220_CAHVOR_V     = (     512.731806     83.454058  13371.226140 )
+      INS-76220_CAHVOR_O     = (       0.999495     -0.029483      0.011824 )
+      INS-76220_CAHVOR_R     = (      -0.000106      1.436779     -0.685884 )
+      
+      INS-76220_CAHVOR_HS    = (   13376.370999 )
+      INS-76220_CAHVOR_HC    = (     859.446513 )
+      INS-76220_CAHVOR_VS    = (   13370.635765 )
+      INS-76220_CAHVOR_VC    = (     534.294115 )
+      INS-76220_CAHVOR_THETA = (      -1.570787 )
+
+      INS-76220_CAHVOR_POS   = ( 0.80436 0.55942 -1.90608 )
+
+      INS-76220_CAHVOR_QUAT  = ( 0.00001 -0.00325 -0.00104 0.99999 )
+
+
+   \begintext
+
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_0_sliced_-76122.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_0_sliced_-76122.xc
new file mode 100644
index 0000000000000000000000000000000000000000..14c8c3bf580bc441b391123332629184753ac362
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_0_sliced_-76122.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL HGA Reconstructed Orientation                           '
+BEGIN_ARRAY 1 19
+'MSL HGA Encoder AZ, Reconstructed       '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-1295A'
+'-12959'
+'3'
+'1'
+19
+'FFFFFFFFEEF978^0'
+'0^0'
+'0^0'
+'-5D5D7E3562FFD4^-4'
+'0^0'
+'0^0'
+'0^0'
+'FFFFFFFFEEF978^0'
+'0^0'
+'0^0'
+'-5D5D7E3562FFD4^-4'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_0_sliced_-76124.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_0_sliced_-76124.xc
new file mode 100644
index 0000000000000000000000000000000000000000..11f19c67153ac54eea2e6ef7e62985fb033fd3c2
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_0_sliced_-76124.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL HGA Reconstructed Orientation                           '
+BEGIN_ARRAY 1 19
+'MSL HGA Encoder EL, Reconstructed       '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-1295C'
+'-1295B'
+'3'
+'1'
+19
+'EC878EFBD0B278^0'
+'61ED6CBA333CB8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'EC878EFBD0B278^0'
+'61ED6CBA333CB8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_1_sliced_-76122.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_1_sliced_-76122.xc
new file mode 100644
index 0000000000000000000000000000000000000000..10eba01c1c1649ce448cee34fb98fef31cefd81f
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_1_sliced_-76122.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL HGA Reconstructed Orientation                           '
+BEGIN_ARRAY 1 19
+'MSL HGA Encoder AZ, Reconstructed       '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-1295A'
+'-12959'
+'3'
+'1'
+19
+'FFFFFFFFEEF978^0'
+'0^0'
+'0^0'
+'-5D5D7E3562FFD4^-4'
+'0^0'
+'0^0'
+'0^0'
+'FFFFFFFFEEF978^0'
+'0^0'
+'0^0'
+'-5D5D7E3562FFD4^-4'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_1_sliced_-76124.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_1_sliced_-76124.xc
new file mode 100644
index 0000000000000000000000000000000000000000..05bba709617cfd82021abd3eecd4710c307c5cff
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_hga_tlm_1_sliced_-76124.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL HGA Reconstructed Orientation                           '
+BEGIN_ARRAY 1 19
+'MSL HGA Encoder EL, Reconstructed       '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-1295C'
+'-1295B'
+'3'
+'1'
+19
+'EC878EFBD0B278^0'
+'61ED6CBA333CB8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'EC878EFBD0B278^0'
+'61ED6CBA333CB8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76301.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76301.xc
new file mode 100644
index 0000000000000000000000000000000000000000..a052661b4c87e0dad8662b2af645aae4e46483b4
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76301.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA SH. AZ Rotation, Reconstructed   '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-12A0D'
+'-12A0C'
+'3'
+'1'
+19
+'EBEF819321FFB8^0'
+'0^0'
+'0^0'
+'-63599448B612F8^0'
+'0^0'
+'0^0'
+'0^0'
+'EBEF819321FFB8^0'
+'0^0'
+'0^0'
+'-63599448B612F8^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76302.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76302.xc
new file mode 100644
index 0000000000000000000000000000000000000000..642b668b19a52f6ad11e788bf3aad9f98c5f89f6
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76302.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA SH. EL Rotation, Reconstructed   '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-12A0E'
+'-12A0D'
+'3'
+'1'
+19
+'7FA72EB47E4D9C^0'
+'-7FA72EB47E4D94^0'
+'-805893D4FAE22^0'
+'805893D4FAE228^0'
+'0^0'
+'0^0'
+'0^0'
+'7FA72EB47E4D9C^0'
+'-7FA72EB47E4D94^0'
+'-805893D4FAE22^0'
+'805893D4FAE228^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76303.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76303.xc
new file mode 100644
index 0000000000000000000000000000000000000000..f5c8bd66edbb77b367ecb81282a3f9d2f1e76e7b
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76303.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA ELBOW Rotation, Reconstructed    '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-12A0F'
+'-12A0E'
+'3'
+'1'
+19
+'BAC136F54A23C8^0'
+'0^0'
+'0^0'
+'AF189DF294FA78^0'
+'0^0'
+'0^0'
+'0^0'
+'BAC136F54A23C8^0'
+'0^0'
+'0^0'
+'AF189DF294FA78^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76304.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76304.xc
new file mode 100644
index 0000000000000000000000000000000000000000..fba8254e9ed0e673029cc8e7b19dec1010255a0c
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76304.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA WRIST Rotation, Reconstructed    '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-12A10'
+'-12A0F'
+'3'
+'1'
+19
+'AB7F67B2F3A63^0'
+'0^0'
+'0^0'
+'-BE1088C056211^0'
+'0^0'
+'0^0'
+'0^0'
+'AB7F67B2F3A63^0'
+'0^0'
+'0^0'
+'-BE1088C056211^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76305.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76305.xc
new file mode 100644
index 0000000000000000000000000000000000000000..b95bcbc80c60cafc1f259025b1e01b3ce0847d31
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_0_sliced_-76305.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA TURRET Rotation, Reconstructed   '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-12A11'
+'-12A10'
+'3'
+'1'
+19
+'2252FFB00BBD4C^0'
+'2252FFB00BBD4C^0'
+'-B1BC3EBC31DB28^0'
+'-B1BC3EBC31DB38^0'
+'0^0'
+'0^0'
+'0^0'
+'2252FFB00BBD4C^0'
+'2252FFB00BBD4C^0'
+'-B1BC3EBC31DB28^0'
+'-B1BC3EBC31DB38^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76301.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76301.xc
new file mode 100644
index 0000000000000000000000000000000000000000..197b05e0ec842a37ab6ad670174957bc8cdf99fe
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76301.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA SH. AZ Rotation, Reconstructed   '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-12A0D'
+'-12A0C'
+'3'
+'1'
+19
+'EBEF819321FFB8^0'
+'0^0'
+'0^0'
+'-63599448B612F8^0'
+'0^0'
+'0^0'
+'0^0'
+'EBEF819321FFB8^0'
+'0^0'
+'0^0'
+'-63599448B612F8^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76302.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76302.xc
new file mode 100644
index 0000000000000000000000000000000000000000..24a8ecfce9df654fccf6018ac102bae5c122e26b
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76302.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA SH. EL Rotation, Reconstructed   '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-12A0E'
+'-12A0D'
+'3'
+'1'
+19
+'7FA72EB47E4D9C^0'
+'-7FA72EB47E4D94^0'
+'-805893D4FAE22^0'
+'805893D4FAE228^0'
+'0^0'
+'0^0'
+'0^0'
+'7FA72EB47E4D9C^0'
+'-7FA72EB47E4D94^0'
+'-805893D4FAE22^0'
+'805893D4FAE228^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76303.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76303.xc
new file mode 100644
index 0000000000000000000000000000000000000000..2d5ec22c565e2b6577b6dd97ce8d0666b9d68d53
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76303.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA ELBOW Rotation, Reconstructed    '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-12A0F'
+'-12A0E'
+'3'
+'1'
+19
+'BAC136F54A23C8^0'
+'0^0'
+'0^0'
+'AF189DF294FA78^0'
+'0^0'
+'0^0'
+'0^0'
+'BAC136F54A23C8^0'
+'0^0'
+'0^0'
+'AF189DF294FA78^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76304.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76304.xc
new file mode 100644
index 0000000000000000000000000000000000000000..21f31f6c9406b8deec2fcbf9c6191c220a8dddfd
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76304.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA WRIST Rotation, Reconstructed    '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-12A10'
+'-12A0F'
+'3'
+'1'
+19
+'AB7F67B2F3A63^0'
+'0^0'
+'0^0'
+'-BE1088C056211^0'
+'0^0'
+'0^0'
+'0^0'
+'AB7F67B2F3A63^0'
+'0^0'
+'0^0'
+'-BE1088C056211^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76305.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76305.xc
new file mode 100644
index 0000000000000000000000000000000000000000..377b04f000b17c9fa5c13145207c7d08b3d059e1
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_ra_tlmres_1_sliced_-76305.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RA Reconstructed Orientation                            '
+BEGIN_ARRAY 1 19
+'MSL RA TURRET Rotation, Reconstructed   '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-12A11'
+'-12A10'
+'3'
+'1'
+19
+'2252FFB00BBD4C^0'
+'2252FFB00BBD4C^0'
+'-B1BC3EBC31DB28^0'
+'-B1BC3EBC31DB38^0'
+'0^0'
+'0^0'
+'0^0'
+'2252FFB00BBD4C^0'
+'2252FFB00BBD4C^0'
+'-B1BC3EBC31DB28^0'
+'-B1BC3EBC31DB38^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rover_tlm_0_sliced_-76000.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rover_tlm_0_sliced_-76000.xc
new file mode 100644
index 0000000000000000000000000000000000000000..a60f1205eaea4e4dd048b61358eb02c17a1d034c
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rover_tlm_0_sliced_-76000.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL Rover Reconstructed Attitude w.r.t. Local Level         '
+BEGIN_ARRAY 1 19
+'MSL w.r.t. Local Level, Reconstructed   '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-128E0'
+'-12C6E'
+'3'
+'1'
+19
+'5AC5C8178E536C^0'
+'-7CAA95EEA175E4^-1'
+'31D361CEE49B5E^-2'
+'EF3D56FB99CF88^0'
+'-38EDF0EAE84BE6^-6'
+'18BC0F27A6E631^-5'
+'-6A2F0E22E30D04^-8'
+'5AC5C8178E536C^0'
+'-7CAA95EEA175E4^-1'
+'31D361CEE49B5E^-2'
+'EF3D56FB99CF88^0'
+'-3A32AB8AF8B912^-6'
+'19492598B54F18^-5'
+'-6C8CBBE5AF156^-8'
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rover_tlm_1_sliced_-76000.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rover_tlm_1_sliced_-76000.xc
new file mode 100644
index 0000000000000000000000000000000000000000..5cf50f9aabc84851e3e908098dec9a8105bfcd06
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rover_tlm_1_sliced_-76000.xc
@@ -0,0 +1,40 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL Rover Reconstructed Attitude w.r.t. Local Level         '
+BEGIN_ARRAY 1 19
+'MSL w.r.t. Local Level, Reconstructed   '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-128E0'
+'-12C6E'
+'3'
+'1'
+19
+'5AC5C8178E536C^0'
+'-7CAA95EEA175E4^-1'
+'31D361CEE49B5E^-2'
+'EF3D56FB99CF88^0'
+'-3C8227AA9F69A4^-6'
+'1A4A22558CFA3C^-5'
+'-70DBF603807C4C^-8'
+'5AC5C8178E536C^0'
+'-7CAA95EEA175E4^-1'
+'31D361CEE49B5E^-2'
+'EF3D56FB99CF88^0'
+'-3DC494346BD8D4^-6'
+'1AD6386559CF77^-5'
+'-73355727A72258^-8'
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'23AC452B004A^C'
+'1^1'
+'2^1'
+END_ARRAY 1 19
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_0_sliced_-76202.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_0_sliced_-76202.xc
new file mode 100644
index 0000000000000000000000000000000000000000..2263e03ce2f8dea44ab43ff6e2ebf33c0a7577ce
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_0_sliced_-76202.xc
@@ -0,0 +1,248 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RSM Reconstructed Orientation                           '
+BEGIN_ARRAY 1 227
+'MSL RSM Resolver AZ, Reconstructed      '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-129AA'
+'-129A9'
+'3'
+'1'
+227
+'CBBE0C09BE6EA^0'
+'0^0'
+'0^0'
+'9B0009C37271C^0'
+'0^0'
+'0^0'
+'1AF2D669B2EB7C^-1'
+'CF0C8D34736D6^0'
+'0^0'
+'0^0'
+'968DFCD2E88B78^0'
+'0^0'
+'0^0'
+'0^0'
+'CF0C8D34736D6^0'
+'0^0'
+'0^0'
+'968DFCD2E88B78^0'
+'0^0'
+'0^0'
+'90524CE62C9378^-1'
+'DF054455919ED^0'
+'0^0'
+'0^0'
+'7DB07C14D2E338^0'
+'0^0'
+'0^0'
+'0^0'
+'DF054455919ED^0'
+'0^0'
+'0^0'
+'7DB07C14D2E338^0'
+'0^0'
+'0^0'
+'91AF61011E7F68^-1'
+'EC3D52E855E7E^0'
+'0^0'
+'0^0'
+'629FFB644752E8^0'
+'0^0'
+'0^0'
+'0^0'
+'EC3D52E855E7E^0'
+'0^0'
+'0^0'
+'629FFB644752E8^0'
+'0^0'
+'0^0'
+'9046485D2F01D8^-1'
+'F60768D2D1D1A8^0'
+'0^0'
+'0^0'
+'46C05B0D3708C^0'
+'0^0'
+'0^0'
+'0^0'
+'F60768D2D1D1A8^0'
+'0^0'
+'0^0'
+'46C05B0D3708C^0'
+'0^0'
+'0^0'
+'91979291166C^-1'
+'FC9EA1B095DFD8^0'
+'0^0'
+'0^0'
+'2976EDA9D958BC^0'
+'0^0'
+'0^0'
+'0^0'
+'FC9EA1B095DFD8^0'
+'0^0'
+'0^0'
+'2976EDA9D958BC^0'
+'0^0'
+'0^0'
+'90E4ADA75203D8^-1'
+'FFBA2B4221CE08^0'
+'0^0'
+'0^0'
+'BD091915FE227^-1'
+'0^0'
+'0^0'
+'0^0'
+'FFBA2B4221CE08^0'
+'0^0'
+'0^0'
+'BD091915FE227^-1'
+'0^0'
+'0^0'
+'-9E1A11D9B86E18^-3'
+'FFB8C54FDF563^0'
+'0^0'
+'0^0'
+'BEEAEC81FE0E8^-1'
+'0^0'
+'0^0'
+'0^0'
+'FFB8C54FDF563^0'
+'0^0'
+'0^0'
+'BEEAEC81FE0E8^-1'
+'0^0'
+'0^0'
+'-9FB97929E752E8^-1'
+'FBA5A7227F4418^0'
+'0^0'
+'0^0'
+'2F02084FEDD8C2^0'
+'0^0'
+'0^0'
+'0^0'
+'FBA5A7227F4418^0'
+'0^0'
+'0^0'
+'2F02084FEDD8C2^0'
+'0^0'
+'0^0'
+'-A6B5A51C61ECA8^-1'
+'F2E0CD380FD748^0'
+'0^0'
+'0^0'
+'50E89EC357DBF8^0'
+'0^0'
+'0^0'
+'0^0'
+'F2E0CD380FD748^0'
+'0^0'
+'0^0'
+'50E89EC357DBF8^0'
+'0^0'
+'0^0'
+'-9FDE76926949B^-1'
+'E5AEA204E024D^0'
+'0^0'
+'0^0'
+'710ED764188728^0'
+'0^0'
+'0^0'
+'0^0'
+'E5AEA204E024D^0'
+'0^0'
+'0^0'
+'710ED764188728^0'
+'0^0'
+'0^0'
+'-A05719258FBBB8^-1'
+'D42710E6498AF8^0'
+'0^0'
+'0^0'
+'8F45FF063C6B48^0'
+'0^0'
+'0^0'
+'0^0'
+'D42710E6498AF8^0'
+'0^0'
+'0^0'
+'8F45FF063C6B48^0'
+'0^0'
+'0^0'
+'-A12C00261FE5E8^-1'
+'BE8D672E17602^0'
+'0^0'
+'0^0'
+'AAF49EDD054CA^0'
+'0^0'
+'0^0'
+'0^0'
+'BE8D672E17602^0'
+'0^0'
+'0^0'
+'AAF49EDD054CA^0'
+'0^0'
+'0^0'
+'-9CBBDB7DC51B78^-1'
+'A5A38E8069C9F^0'
+'0^0'
+'0^0'
+'C3310C165BAB68^0'
+'0^0'
+'0^0'
+'0^0'
+'A5A38E8069C9F^0'
+'0^0'
+'0^0'
+'C3310C165BAB68^0'
+'0^0'
+'0^0'
+'-A0073117D2DBE8^-1'
+'8FA0840D080438^0'
+'0^0'
+'0^0'
+'D3E9D343DC113^0'
+'0^0'
+'0^0'
+'-20E72ABDA5E286^-1'
+'23AC425B0B71^C'
+'23AC425C4397FE^C'
+'23AC4268AF5298^C'
+'23AC426F3DB92^C'
+'23AC427BAF597A^C'
+'23AC42824DFF5^C'
+'23AC4293AF5B1C^C'
+'23AC429A3DB89A^C'
+'23AC42A7AF5AFA^C'
+'23AC42AE49655E^C'
+'23AC42B9AEF7F4^C'
+'23AC42C0456FB8^C'
+'23AC42C9AF64AE^C'
+'23AC42CFC969E4^C'
+'23AC42DAAF5298^C'
+'23AC42E1C3CF4E^C'
+'23AC42EBAF6806^C'
+'23AC42F2696BFC^C'
+'23AC4303AF64AE^C'
+'23AC430AA583A6^C'
+'23AC4316AF502A^C'
+'23AC431DA96AE^C'
+'23AC4329AF5A1^C'
+'23AC4330A969C2^C'
+'23AC433CAF51AC^C'
+'23AC4343C95B14^C'
+'23AC4354AF5526^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'1C^2'
+END_ARRAY 1 227
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_0_sliced_-76204.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_0_sliced_-76204.xc
new file mode 100644
index 0000000000000000000000000000000000000000..2e662a173d93763a9dadabcce6248b9b0a28e87c
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_0_sliced_-76204.xc
@@ -0,0 +1,248 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RSM Reconstructed Orientation                           '
+BEGIN_ARRAY 1 227
+'MSL RSM Resolver EL, Reconstructed      '
+'23AC425B0B71^C'
+'23AC435A3716^C'
+'-129AC'
+'-129AB'
+'3'
+'1'
+227
+'D5898FE4B243B^0'
+'0^0'
+'-8D338697C9F2E^0'
+'0^0'
+'0^0'
+'-716E092B6C9164^-4'
+'0^0'
+'D58A5DB2C5D6B8^0'
+'0^0'
+'-8D324F5934EEE8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'D58A5DB2C5D6B8^0'
+'0^0'
+'-8D324F5934EEE8^0'
+'0^0'
+'0^0'
+'-1996E322E1DB8F^-3'
+'0^0'
+'D58D41EE12E2D8^0'
+'0^0'
+'-8D2DEFC06DFBD8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'D58D41EE12E2D8^0'
+'0^0'
+'-8D2DEFC06DFBD8^0'
+'0^0'
+'0^0'
+'-26041F2F2FE3FC^-3'
+'0^0'
+'D591981C07FC28^0'
+'0^0'
+'-8D27603ED75F88^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'D591981C07FC28^0'
+'0^0'
+'-8D27603ED75F88^0'
+'0^0'
+'0^0'
+'-133144CFFD7F55^-3'
+'0^0'
+'D593C31FA9569^0'
+'0^0'
+'-8D2418714236A^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'D593C31FA9569^0'
+'0^0'
+'-8D2418714236A^0'
+'0^0'
+'0^0'
+'-FE21AF14D85F18^-4'
+'0^0'
+'D5959198D535C8^0'
+'0^0'
+'-8D215C94C2DDD^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'D5959198D535C8^0'
+'0^0'
+'-8D215C94C2DDD^0'
+'0^0'
+'0^0'
+'7F55C0F2A69DA8^-4'
+'0^0'
+'D594AA5D5DEFF^0'
+'0^0'
+'-8D22BA83BFF81^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'D594AA5D5DEFF^0'
+'0^0'
+'-8D22BA83BFF81^0'
+'0^0'
+'0^0'
+'-8C668FD2DB58F8^-1'
+'0^0'
+'E325788C22A738^0'
+'0^0'
+'-7611EBE862BAC4^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E325788C22A738^0'
+'0^0'
+'-7611EBE862BAC4^0'
+'0^0'
+'0^0'
+'AA9D0C7131C7E^-4'
+'0^0'
+'E32461F9C52BE^0'
+'0^0'
+'-761403CEEA84B8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E32461F9C52BE^0'
+'0^0'
+'-761403CEEA84B8^0'
+'0^0'
+'0^0'
+'128CD1C4678C47^-3'
+'0^0'
+'E3229584253098^0'
+'0^0'
+'-76177982BF67B8^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E3229584253098^0'
+'0^0'
+'-76177982BF67B8^0'
+'0^0'
+'0^0'
+'158A197617AEC1^-3'
+'0^0'
+'E3206C1F0909D^0'
+'0^0'
+'-761BA1CE57988^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E3206C1F0909D^0'
+'0^0'
+'-761BA1CE57988^0'
+'0^0'
+'0^0'
+'2E96FBC253EA5^-3'
+'0^0'
+'E31BBC314B027^0'
+'0^0'
+'-7624A4E23B048C^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E31BBC314B027^0'
+'0^0'
+'-7624A4E23B048C^0'
+'0^0'
+'0^0'
+'2029AA1254DFAC^-3'
+'0^0'
+'E3187FA5642AB^0'
+'0^0'
+'-762ADD672BCA1C^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E3187FA5642AB^0'
+'0^0'
+'-762ADD672BCA1C^0'
+'0^0'
+'0^0'
+'2A3A5593D64258^-3'
+'0^0'
+'E3142C11FABC2^0'
+'0^0'
+'-76332D95B32D3^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'E3142C11FABC2^0'
+'0^0'
+'-76332D95B32D3^0'
+'0^0'
+'0^0'
+'2AED403128ABF2^-3'
+'0^0'
+'E310BF14BE8FB8^0'
+'0^0'
+'-7639C22C2D6EE8^0'
+'0^0'
+'0^0'
+'8D37946AF4071^-4'
+'0^0'
+'23AC425B0B71^C'
+'23AC425C4397FE^C'
+'23AC4268AF5298^C'
+'23AC426F3DB92^C'
+'23AC427BAF597A^C'
+'23AC42824DFF5^C'
+'23AC4293AF5B1C^C'
+'23AC429A3DB89A^C'
+'23AC42A7AF5AFA^C'
+'23AC42AE49655E^C'
+'23AC42B9AEF7F4^C'
+'23AC42C0456FB8^C'
+'23AC42C9AF64AE^C'
+'23AC42CFC969E4^C'
+'23AC42DAAF5298^C'
+'23AC42E1C3CF4E^C'
+'23AC42EBAF6806^C'
+'23AC42F2696BFC^C'
+'23AC4303AF64AE^C'
+'23AC430AA583A6^C'
+'23AC4316AF502A^C'
+'23AC431DA96AE^C'
+'23AC4329AF5A1^C'
+'23AC4330A969C2^C'
+'23AC433CAF51AC^C'
+'23AC4343C95B14^C'
+'23AC4354AF5526^C'
+'23AC435A3716^C'
+'23AC425B0B71^C'
+'1^1'
+'1C^2'
+END_ARRAY 1 227
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_1_sliced_-76202.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_1_sliced_-76202.xc
new file mode 100644
index 0000000000000000000000000000000000000000..88a95a86ea52949aabb54021a0849da250042029
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_1_sliced_-76202.xc
@@ -0,0 +1,152 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RSM Reconstructed Orientation                           '
+BEGIN_ARRAY 1 131
+'MSL RSM Resolver AZ, Reconstructed      '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-129AA'
+'-129A9'
+'3'
+'1'
+131
+'C82FF1DB08B708^0'
+'0^0'
+'0^0'
+'9F90B094129598^0'
+'0^0'
+'0^0'
+'-4D955CD68021E4^-1'
+'C82FF1DB08B7^0'
+'0^0'
+'0^0'
+'9F90B0941295A^0'
+'0^0'
+'0^0'
+'-BE4824E4415868^-1'
+'A76EF54B043048^0'
+'0^0'
+'0^0'
+'C1A78A19D3756^0'
+'0^0'
+'0^0'
+'0^0'
+'A76EF54B043048^0'
+'0^0'
+'0^0'
+'C1A78A19D3756^0'
+'0^0'
+'0^0'
+'-BE6BE8EBF2DAB8^-1'
+'80F9F7CFB69898^0'
+'0^0'
+'0^0'
+'DD22C933182E58^0'
+'0^0'
+'0^0'
+'0^0'
+'80F9F7CFB69898^0'
+'0^0'
+'0^0'
+'DD22C933182E58^0'
+'0^0'
+'0^0'
+'-BD0075A841B5E8^-1'
+'56258B06F84AA4^0'
+'0^0'
+'0^0'
+'F111ECCA1B8308^0'
+'0^0'
+'0^0'
+'0^0'
+'56258B06F84AA4^0'
+'0^0'
+'0^0'
+'F111ECCA1B8308^0'
+'0^0'
+'0^0'
+'-BEE8AE61EB4B6^-1'
+'28602A8C8BB3A2^0'
+'0^0'
+'0^0'
+'FCCBC545EF342^0'
+'0^0'
+'0^0'
+'0^0'
+'28602A8C8BB3A2^0'
+'0^0'
+'0^0'
+'FCCBC545EF342^0'
+'0^0'
+'0^0'
+'-BC277D08239C68^-1'
+'6D26A22A79D49^-1'
+'0^0'
+'0^0'
+'-FFE8B9FB35A2F8^0'
+'0^0'
+'0^0'
+'0^0'
+'6D26A22A79D49^-1'
+'0^0'
+'0^0'
+'-FFE8B9FB35A2F8^0'
+'0^0'
+'0^0'
+'-BEAAC9481D209^-1'
+'35AE249C4C7AEA^0'
+'0^0'
+'0^0'
+'-FA4F051D5B5838^0'
+'0^0'
+'0^0'
+'0^0'
+'35AE249C4C7AEA^0'
+'0^0'
+'0^0'
+'-FA4F051D5B5838^0'
+'0^0'
+'0^0'
+'-BECD709A0B093^-1'
+'62BE2324BC32CC^0'
+'0^0'
+'0^0'
+'-EC30B9D1132298^0'
+'0^0'
+'0^0'
+'0^0'
+'62BE2324BC32CC^0'
+'0^0'
+'0^0'
+'-EC30B9D1132298^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC4535AF4FF8^C'
+'23AC453DA57614^C'
+'23AC4547AF5D78^C'
+'23AC454FA3B02E^C'
+'23AC4559AF571E^C'
+'23AC4561B1D9A^C'
+'23AC456BAF68E^C'
+'23AC45739DC3DE^C'
+'23AC4584AF5138^C'
+'23AC458CBDA08C^C'
+'23AC4599AF517A^C'
+'23AC45A19DC608^C'
+'23AC45ABAF6DFC^C'
+'23AC45B39DC36A^C'
+'23AC45BC7F575^C'
+'23AC452B004A^C'
+'1^1'
+'1^2'
+END_ARRAY 1 131
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_1_sliced_-76204.xc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_1_sliced_-76204.xc
new file mode 100644
index 0000000000000000000000000000000000000000..225027107134210698dbf7298871d798ddfe9b4b
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_surf_rsm_tlmres_1_sliced_-76204.xc
@@ -0,0 +1,152 @@
+DAFETF NAIF DAF ENCODED TRANSFER FILE
+'DAF/CK  '
+'2'
+'6'
+'MSL RSM Reconstructed Orientation                           '
+BEGIN_ARRAY 1 131
+'MSL RSM Resolver EL, Reconstructed      '
+'23AC452B004A^C'
+'23AC46285C3F^C'
+'-129AC'
+'-129AB'
+'3'
+'1'
+131
+'F6AF0CB52EE6F8^0'
+'0^0'
+'-446EE917194AF4^0'
+'0^0'
+'0^0'
+'133977D0874B74^-3'
+'0^0'
+'F6AF0CB52EE6F8^0'
+'0^0'
+'-446EE917194AF4^0'
+'0^0'
+'0^0'
+'2F266F0284B344^-3'
+'0^0'
+'F6ABE9A985CDE8^0'
+'0^0'
+'-447A36DA20D5C4^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6ABE9A985CDE8^0'
+'0^0'
+'-447A36DA20D5C4^0'
+'0^0'
+'0^0'
+'325B2C2AA863AE^-3'
+'0^0'
+'F6A89035C0C948^0'
+'0^0'
+'-4486467355C89^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6A89035C0C948^0'
+'0^0'
+'-4486467355C89^0'
+'0^0'
+'0^0'
+'2570BB25B83DD6^-3'
+'0^0'
+'F6A60DDB69F5C^0'
+'0^0'
+'-448F4E0032F334^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6A60DDB69F5C^0'
+'0^0'
+'-448F4E0032F334^0'
+'0^0'
+'0^0'
+'1C4AFB8EDA9F9E^-3'
+'0^0'
+'F6A42CFFCC9638^0'
+'0^0'
+'-44960F8FEC5524^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6A42CFFCC9638^0'
+'0^0'
+'-44960F8FEC5524^0'
+'0^0'
+'0^0'
+'-31FB60367F636^-4'
+'0^0'
+'F6A462EFB8DB5^0'
+'0^0'
+'-44954D9862B738^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6A462EFB8DB5^0'
+'0^0'
+'-44954D9862B738^0'
+'0^0'
+'0^0'
+'-FBB711AC9E0ED8^-4'
+'0^0'
+'F6A56E57346158^0'
+'0^0'
+'-44918BD53B29C^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6A56E57346158^0'
+'0^0'
+'-44918BD53B29C^0'
+'0^0'
+'0^0'
+'-FBBAED83F3201^-4'
+'0^0'
+'F6A679B0099598^0'
+'0^0'
+'-448DCA0E010208^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'F6A679B0099598^0'
+'0^0'
+'-448DCA0E010208^0'
+'0^0'
+'0^0'
+'0^0'
+'0^0'
+'23AC452B004A^C'
+'23AC4535AF4FF8^C'
+'23AC453DA57614^C'
+'23AC4547AF5D78^C'
+'23AC454FA3B02E^C'
+'23AC4559AF571E^C'
+'23AC4561B1D9A^C'
+'23AC456BAF68E^C'
+'23AC45739DC3DE^C'
+'23AC4584AF5138^C'
+'23AC458CBDA08C^C'
+'23AC4599AF517A^C'
+'23AC45A19DC608^C'
+'23AC45ABAF6DFC^C'
+'23AC45B39DC36A^C'
+'23AC45BC7F575^C'
+'23AC452B004A^C'
+'1^1'
+'1^2'
+END_ARRAY 1 131
+TOTAL_ARRAYS 1
+ ~NAIF/SPC BEGIN COMMENTS~
+This CK is for testing with the image: /Users/arsanders/data/msl/images/2264ML0121141200805116C00_DRCL.cub
+
+This CK was generated using the following command: {}
+ ~NAIF/SPC END COMMENTS~
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_v08.tf b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_v08.tf
new file mode 100755
index 0000000000000000000000000000000000000000..c1c3f9a14ad1dc8022f158c2e4468793d03266d0
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/msl_v08.tf
@@ -0,0 +1,4735 @@
+KPL/FK
+
+MSL Frames Kernel
+========================================================================
+
+   This frame kernel contains complete set of frame definitions for the
+   MSL including definitions for the MSL cruise, descent, and rover
+   frames, local level, topocentric and surface-fixed frames, appendage 
+   frames, and science instrument frames.
+
+
+Version and Date
+========================================================================
+
+   Version 0.8 -- May 30, 2013 -- Boris Semenov, NAIF
+
+      Updated alignments of MSL_NAVCAM_LEFT_B and MSL_NAVCAM_RIGHT_B
+      based on the updated CAHVOR models for the -5C temperature point
+      (MSL_CAL_005_SN_0215-NAVL-FLIGHT-RCE-B.cahvor and 
+      MSL_CAL_005_SN_0218-NAVR-FLIGHT-RCE-B.cahvor).
+
+   Version 0.7 -- April 12, 2013 -- Boris Semenov, NAIF
+
+      Added name/ID mappings for DIMU_A.
+
+   Version 0.6 -- November 21, 2012 -- Boris Semenov, NAIF
+
+      Added name/ID mappings for DAN modules.
+
+   Version 0.5 -- August 8, 2012 -- Boris Semenov, NAIF
+
+      Redefined HGA, RSM, and RA frame chains. Added name/ID mappings
+      for calibration targets, fiducials, etc. Incorporated actual
+      frame alignments based on camera models and flight parameters.
+      Incorporated the topocentric frame definition based on the actual
+      landing site location.
+
+   Version 0.4 -- December 13, 2011 -- Boris Semenov, NAIF
+
+      Changed antenna frame ID codes as follows:
+
+         MSL_PLGA        -76810  -->  -76060
+         MSL_TLGA        -76811  -->  -76061
+         MSL_PUHF        -76812  -->  -76062
+         MSL_MGA         -76813  -->  -76063
+
+         MSL_DLGA        -76820  -->  -76064
+         MSL_DUHF        -76821  -->  -76065
+
+         MSL_RLGA        -76830  -->  -76110
+         MSL_RUHF        -76840  -->  -76111
+         MSL_HGA_BASE    -76850  -->  -76120
+         MSL_HGA_GIMBAL  -76851  -->  -76121
+         MSL_HGA         -76852  -->  -76122
+         MSL_HGA_EB      -76853  -->  -76123
+
+     Added name-ID mapping for all instruments, structures and sites.
+
+   Version 0.3 -- May 4, 2011 -- Boris Semenov, NAIF
+
+      Preliminary version. Changed MSL_TLGA tilt angle to 17.5 
+      degrees.
+
+   Version 0.2 -- May 3, 2011 -- Boris Semenov, NAIF
+
+      Preliminary version. Added CACS and antenna frames.
+
+   Version 0.1 -- March 3, 2011 -- Boris Semenov, NAIF
+
+      Preliminary version. Added rover and cruise/descent frames.
+
+   Version 0.0 -- December 4, 2007 -- Boris Semenov, NAIF
+
+      Very preliminary version. Contains definitions only for the 
+      LOCAL_LEVEL and SURFACE_FIXED frames.
+ 
+
+References
+========================================================================
+
+   1. ``Frames Required Reading''
+
+   2. ``Kernel Pool Required Reading''
+
+   3. ``C-Kernel Required Reading''
+
+   4. MSL 3PCS document, latest version
+
+   5. RSVP's MSL_kinematics_tree.xml, 2012-07-06
+
+   6. FSW parameter set, July 2012
+
+   7. 'MSL_Surface_Cruise DataRate_Analysis_Rev-A_5-19-11.pdf', 
+      Section E.7, May 10, 2011
+
+   8. MSL camera CAHVORE Models and reference positions/quaternions,
+      July 2012
+
+
+Contact Information
+========================================================================
+
+   Boris V. Semenov, NAIF/JPL, (818)-354-8136, Boris.Semenov@jpl.nasa.gov
+
+
+Implementation Notes
+========================================================================
+
+   This file is used by the SPICE system as follows: programs that make
+   use of this frame kernel must `load' the kernel using SPICE routine
+   FURNSH, normally during program initialization.
+
+   This file was created and may be updated with a text editor or word
+   processor.
+
+
+MSL NAIF ID Codes
+========================================================================
+
+   The following names and NAIF ID codes are assigned to the MSL rover,
+   its structures and science instruments (the keywords implementing
+   these definitions are located in the section "MSL Mission NAIF ID
+   Codes -- Definition Section" at the end of this file):
+ 
+   Landing site and sites:
+   -----------------------
+
+      MSL_LANDING_SITE         -76900
+
+      MSL_SITE_1...399         -76501...-76899
+
+   Cruise and descent stages and the rover:
+   ----------------------------------------
+
+      MSL                      -76
+
+      MSL_ROVER                -76000
+
+      MSL_SPACECRAFT           -76010
+      MSL_CRUISE_STAGE         -76020
+      MSL_DESCENT_STAGE        -76030
+      MSL_ROVER_MECH           -76040
+      MSL_CACS                 -76050
+
+      MSL_DIMU_A               -76031
+
+
+   Instruments and structures on cruise and descent modules:
+   ---------------------------------------------------------
+
+      MSL_PLGA                 -76060
+      MSL_TLGA                 -76061
+      MSL_PUHF                 -76062
+      MSL_MGA                  -76063
+
+      MSL_DLGA                 -76064
+      MSL_DUHF                 -76065
+
+      MSL_MEDLI_MISP_T1        -76071
+      MSL_MEDLI_MISP_T2        -76072
+      MSL_MEDLI_MISP_T3        -76073
+      MSL_MEDLI_MISP_T4        -76074
+      MSL_MEDLI_MISP_T5        -76075
+      MSL_MEDLI_MISP_T6        -76076
+      MSL_MEDLI_MISP_T7        -76077
+
+      MSL_MEDLI_MEADS_P1       -76081
+      MSL_MEDLI_MEADS_P2       -76082
+      MSL_MEDLI_MEADS_P3       -76083
+      MSL_MEDLI_MEADS_P4       -76084
+      MSL_MEDLI_MEADS_P5       -76085
+      MSL_MEDLI_MEADS_P6       -76086
+      MSL_MEDLI_MEADS_P7       -76087
+
+   Instruments and devices on the rover:
+   --------------------------------------
+
+      MSL_RLGA                 -76110
+      MSL_RUHF                 -76111
+
+      MSL_HGA_ZERO_AZ          -76121
+      MSL_HGA_AZ               -76122
+      MSL_HGA_ZERO_EL          -76123
+      MSL_HGA_EL               -76124
+      MSL_HGA                  -76125
+      MSL_HGA_EB               -76126
+
+      MSL_HAZCAM_FRONT_LEFT_A  -76131
+      MSL_HAZCAM_FRONT_RIGHT_A -76132
+      MSL_HAZCAM_FRONT_LEFT_B  -76133
+      MSL_HAZCAM_FRONT_RIGHT_B -76134
+      MSL_HAZCAM_BACK_LEFT_A   -76141
+      MSL_HAZCAM_BACK_RIGHT_A  -76142
+      MSL_HAZCAM_BACK_LEFT_B   -76143
+      MSL_HAZCAM_BACK_RIGHT_B  -76144
+
+      MSL_RAD                  -76150
+
+      MSL_MARDI                -76160
+
+      MSL_REMS_UVS             -76170
+
+      MSL_DAN                  -76180
+      MSL_DAN_PNG              -76191
+      MSL_DAN_DE               -76192
+      MSL_DAN_DE_CTN           -76193
+      MSL_DAN_DE_CETN          -76194
+      MSL_REMS_PS              -76181
+      MSL_SAM                  -76182
+      MSL_SAM_1_INLET          -76184
+      MSL_SAM_2_INLET          -76185
+      MSL_CHEMIN               -76183
+      MSL_CHEMIN_INLET         -76186
+
+   Instruments and devices on RSM:
+   --------------------------------
+
+      MSL_RSM_ZERO_AZ          -76201
+      MSL_RSM_AZ               -76202          
+      MSL_RSM_ZERO_EL          -76203
+      MSL_RSM_EL               -76204
+      MSL_RSM_HEAD             -76205
+
+      MSL_MASTCAM_LEFT         -76210
+      MSL_MASTCAM_LEFT_F1      -76211
+      MSL_MASTCAM_LEFT_F2      -76212
+      MSL_MASTCAM_LEFT_F3      -76213
+      MSL_MASTCAM_LEFT_F4      -76214
+      MSL_MASTCAM_LEFT_F5      -76215
+      MSL_MASTCAM_LEFT_F6      -76216
+      MSL_MASTCAM_LEFT_F7      -76217
+      MSL_MASTCAM_LEFT_F8      -76218
+      MSL_MASTCAM_RIGHT        -76220
+      MSL_MASTCAM_RIGHT_F1     -76221
+      MSL_MASTCAM_RIGHT_F2     -76222
+      MSL_MASTCAM_RIGHT_F3     -76223
+      MSL_MASTCAM_RIGHT_F4     -76224
+      MSL_MASTCAM_RIGHT_F5     -76225
+      MSL_MASTCAM_RIGHT_F6     -76226
+      MSL_MASTCAM_RIGHT_F7     -76227
+      MSL_MASTCAM_RIGHT_F8     -76228
+
+      MSL_NAVCAM_LEFT_A        -76231
+      MSL_NAVCAM_RIGHT_A       -76232
+      MSL_NAVCAM_LEFT_B        -76233
+      MSL_NAVCAM_RIGHT_B       -76234
+
+      MSL_CHEMCAM              -76240
+      MSL_CHEMCAM_LIBS_LASER   -76241
+      MSL_CHEMCAM_LIBS_CAM     -76242
+      MSL_CHEMCAM_RMI          -76243
+
+      MSL_REMS_BOOM1           -76250
+      MSL_REMS_BOOM1_WS1       -76251
+      MSL_REMS_BOOM1_WS2       -76252
+      MSL_REMS_BOOM1_WS3       -76253
+      MSL_REMS_BOOM1_ATS       -76254
+      MSL_REMS_BOOM1_GTS       -76255
+      MSL_REMS_BOOM1_TIP       -76256
+
+      MSL_REMS_BOOM2           -76260
+      MSL_REMS_BOOM2_WS1       -76261
+      MSL_REMS_BOOM2_WS2       -76262
+      MSL_REMS_BOOM2_WS3       -76263
+      MSL_REMS_BOOM2_ATS       -76264
+      MSL_REMS_BOOM2_HS        -76265
+      MSL_REMS_BOOM2_TIP       -76266
+
+   Instruments and devices on RA:
+   ------------------------------
+
+      MSL_RA_BASE              -76300
+      MSL_RA_SHOULDER_AZ       -76301
+      MSL_RA_SHOULDER_EL       -76302
+      MSL_RA_ELBOW             -76303
+      MSL_RA_WRIST             -76304
+      MSL_RA_TURRET            -76305
+      MSL_RA_TURRET_HEAD       -76306
+
+      MSL_MAHLI_REF            -76310
+      MSL_MAHLI                -76311
+
+      MSL_APXS_REF             -76320
+      MSL_APXS                 -76321
+
+      MSL_PADS_REF             -76330
+      MSL_PADS                 -76331
+
+      MSL_DRT_REF              -76340
+      MSL_DRT                  -76341
+
+      MSL_CHIMRA_REF           -76350
+      MSL_CHIMRA               -76351
+
+   Fiducials, Calibration targets, etc.
+   ------------------------------------
+
+      MSL_FD_RESTRAINT_PORT    -76401
+      MSL_FD_RESTRAINT_SBRD    -76402
+      MSL_FD_DECK_SIDE_PORT    -76403
+      MSL_FD_DECK_FRONT_PORT   -76404
+      MSL_FD_DECK_CENTER_PORT  -76405
+      MSL_FD_DECK_CENTER_SBRD  -76406
+      MSL_FD_DECK_FRONT_SBRD   -76407
+
+      MSL_FD_OCM_PORT          -76408
+      MSL_FD_OCM_CENTER        -76409
+      MSL_FD_OCM_STARBOARD     -76410
+
+      MSL_SCI_OBS_TRAY         -76411
+      MSL_ENG_OBS_TRAY         -76412
+
+      MSL_BIT_BOX_1_TARGET     -76413
+      MSL_BIT_BOX_2_TARGET     -76414
+
+      MSL_OCM_LOCATION_1       -76415
+      MSL_OCM_LOCATION_2       -76416
+      MSL_OCM_LOCATION_3       -76417
+      MSL_OCM_LOCATION_4       -76418
+      MSL_OCM_LOCATION_5       -76419
+      MSL_OCM_LOCATION_6       -76420
+
+      MSL_APXS_CALTARGET       -76421
+      MSL_MAHLI_CALTARGET      -76422
+
+      MSL_CCAM_CAL1            -76423
+      MSL_CCAM_CAL2            -76424
+      MSL_CCAM_CAL3            -76425
+      MSL_CCAM_CAL4            -76426
+      MSL_CCAM_CAL5            -76427
+      MSL_CCAM_CAL6            -76428
+      MSL_CCAM_CAL7            -76429
+      MSL_CCAM_CAL8            -76430
+      MSL_CCAM_CAL9            -76431
+      MSL_CCAM_CAL10           -76432
+
+      MSL_MCAM_CAL             -76433
+
+
+MSL Frames
+========================================================================
+
+   The following MSL frames are defined in this kernel file:
+
+           Name                      Relative to         Type    NAIF ID
+      ======================     ===================     =====   =======
+
+   Surface frames:
+   ---------------
+
+      MSL_TOPO                   IAU_MARS                FIXED   -76900
+      MSL_LOCAL_LEVEL            MSL_TOPO                FIXED   -76910
+      MSL_SURFACE_FIXED          MSL_LOCAL_LEVEL         FIXED   -76920
+
+   Rover frames:
+   -------------
+
+      MSL_ROVER                  J2000, MSL_LOCAL_LEVEL  CK      -76000
+      MSL_ROVER_MECH             MSL_ROVER               FIXED   -76040
+
+   Cruise and Descent frames:
+   --------------------------
+
+      MSL_SPACECRAFT             MSL_ROVER               FIXED   -76010
+      MSL_CRUISE_STAGE           MSL_ROVER               FIXED   -76020
+      MSL_DESCENT_STAGE          MSL_ROVER               FIXED   -76030
+      MSL_CACS                   J2000, MSL_ROVER        CK      -76050
+
+   Cruise and Descent Antenna frames:
+   ----------------------------------
+
+      MSL_PLGA                   MSL_CRUISE_STAGE        FIXED   -76060
+      MSL_TLGA                   MSL_CRUISE_STAGE        FIXED   -76061
+      MSL_PUHF                   MSL_CRUISE_STAGE        FIXED   -76062
+      MSL_MGA                    MSL_CRUISE_STAGE        FIXED   -76063
+
+      MSL_DLGA                   MSL_DESCENT_STAGE       FIXED   -76064
+      MSL_DUHF                   MSL_DESCENT_STAGE       FIXED   -76065
+
+   Rover instrument and structures frames:
+   ---------------------------------------
+
+      MSL_RLGA                   MSL_ROVER               FIXED   -76110
+      MSL_RUHF                   MSL_ROVER               FIXED   -76111
+
+      MSL_HGA_ZERO_AZ            MSL_ROVER               FIXED   -76121
+      MSL_HGA_AZ                 MSL_HGA_ZERO_AZ         CK      -76122
+      MSL_HGA_ZERO_EL            MSL_HGA_AZ              FIXED   -76123
+      MSL_HGA_EL                 MSL_HGA_ZERO_EL         CK      -76124
+      MSL_HGA                    MSL_HGA_EL              FIXED   -76125
+      MSL_HGA_EB                 MSL_HGA                 FIXED   -76126
+
+      MSL_HAZCAM_FRONT_LEFT_A    MSL_ROVER               FIXED   -76131
+      MSL_HAZCAM_FRONT_RIGHT_A   MSL_ROVER               FIXED   -76132
+      MSL_HAZCAM_FRONT_LEFT_B    MSL_ROVER               FIXED   -76133
+      MSL_HAZCAM_FRONT_RIGHT_B   MSL_ROVER               FIXED   -76134
+      MSL_HAZCAM_BACK_LEFT_A     MSL_ROVER               FIXED   -76141
+      MSL_HAZCAM_BACK_RIGHT_A    MSL_ROVER               FIXED   -76142
+      MSL_HAZCAM_BACK_LEFT_B     MSL_ROVER               FIXED   -76143
+      MSL_HAZCAM_BACK_RIGHT_B    MSL_ROVER               FIXED   -76144
+
+      MSL_RAD                    MSL_ROVER               FIXED   -76150
+
+      MSL_MARDI                  MSL_ROVER               FIXED   -76160
+
+      MSL_REMS_UVS               MSL_ROVER               FIXED   -76170
+
+      MSL_DAN                    MSL_ROVER               FIXED   -76180
+      MSL_SAM                    MSL_ROVER               FIXED   -76182
+      MSL_CHEMIN                 MSL_ROVER               FIXED   -76183
+
+   RSM instrument and structures frames:
+   -------------------------------------
+
+      MSL_RSM_ZERO_AZ            MSL_ROVER               FIXED   -76201
+      MSL_RSM_AZ                 MSL_RSM_ZERO_AZ         CK      -76202
+      MSL_RSM_ZERO_EL            MSL_RSM_AZ              FIXED   -76203
+      MSL_RSM_EL                 MSL_RSM_ZERO_EL         CK      -76204
+      MSL_RSM_HEAD               MSL_RSM_EL              FIXED   -76205
+
+      MSL_MASTCAM_LEFT           MSL_RSM_HEAD            FIXED   -76210
+      MSL_MASTCAM_RIGHT          MSL_RSM_HEAD            FIXED   -76220
+
+      MSL_NAVCAM_LEFT_A          MSL_RSM_HEAD            FIXED   -76231
+      MSL_NAVCAM_RIGHT_A         MSL_RSM_HEAD            FIXED   -76232
+      MSL_NAVCAM_LEFT_B          MSL_RSM_HEAD            FIXED   -76233
+      MSL_NAVCAM_RIGHT_B         MSL_RSM_HEAD            FIXED   -76234
+
+      MSL_CHEMCAM_LIBS_LASER     MSL_RSM_HEAD            FIXED   -76241
+      MSL_CHEMCAM_LIBS_CAM       MSL_RSM_HEAD            FIXED   -76242
+      MSL_CHEMCAM_RMI            MSL_RSM_HEAD            FIXED   -76243
+
+      MSL_REMS_BOOM1             MSL_ROVER               FIXED   -76250
+      MSL_REMS_BOOM1_WS1         MSL_REMS_BOOM1          FIXED   -76251
+      MSL_REMS_BOOM1_WS2         MSL_REMS_BOOM1          FIXED   -76252
+      MSL_REMS_BOOM1_WS3         MSL_REMS_BOOM1          FIXED   -76253
+      MSL_REMS_BOOM1_ATS         MSL_REMS_BOOM1          FIXED   -76254
+      MSL_REMS_BOOM1_GTS         MSL_REMS_BOOM1          FIXED   -76255
+
+      MSL_REMS_BOOM2             MSL_ROVER               FIXED   -76260
+      MSL_REMS_BOOM2_WS1         MSL_REMS_BOOM2          FIXED   -76261
+      MSL_REMS_BOOM2_WS2         MSL_REMS_BOOM2          FIXED   -76262
+      MSL_REMS_BOOM2_WS3         MSL_REMS_BOOM2          FIXED   -76263
+      MSL_REMS_BOOM2_ATS         MSL_REMS_BOOM2          FIXED   -76264
+      MSL_REMS_BOOM2_HS          MSL_REMS_BOOM2          FIXED   -76265
+
+   RA instrument and structures frames:
+   -------------------------------------
+
+      MSL_RA_BASE                MSL_ROVER               FIXED   -76300
+      MSL_RA_SHOULDER_AZ         MSL_RA_BASE             CK      -76301
+      MSL_RA_SHOULDER_EL         MSL_RA_SHOULDER_AZ      CK      -76302
+      MSL_RA_ELBOW               MSL_RA_SHOULDER_EL      CK      -76303
+      MSL_RA_WRIST               MSL_RA_ELBOW            CK      -76304
+      MSL_RA_TURRET              MSL_RA_WRIST            CK      -76305
+
+      MSL_MAHLI_REF              MSL_RA_TURRET           CK      -76310
+      MSL_MAHLI                  MSL_MAHLI_REF           FIXED   -76311
+
+      MSL_APXS_REF               MSL_RA_TURRET           CK      -76320
+      MSL_APXS                   MSL_APXS_REF            FIXED   -76321
+
+      MSL_PADS_REF               MSL_RA_TURRET           CK      -76330
+      MSL_PADS                   MSL_PADS_REF            FIXED   -76331
+
+      MSL_DRT_REF                MSL_RA_TURRET           CK      -76340
+      MSL_DRT                    MSL_DRT_REF             FIXED   -76341
+
+      MSL_CHIMRA_REF             MSL_RA_TURRET           CK      -76350
+      MSL_CHIMRA                 MSL_CHIMRA_REF          FIXED   -76351
+
+
+MSL Frame Tree
+========================================================================
+
+   The diagram below shows the MSL frame hierarchy:
+
+
+                                   "J2000" 
+                      +---------------------------------+
+                      |               |<-pck            |<-pck
+                      |               v                 v
+                      |          "IAU_MARS"       "IAU_EARTH"
+                      |          ----------       -----------
+                      |               |<-fixed      
+                      |               v             
+                      |          "MSL_TOPO"      "MSL_SURFACE_FIXED"
+                      |          ----------      ---------------------
+                      |               |<-fixed          ^<-fixed
+                      |               v                 |
+                      |       "MSL_LOCAL_LEVEL"         |
+                      |       --------------------------+
+                      |               |                      
+                      |               |                   "MSL_DLGA/DUHF"
+                      |               |                   ---------------
+                      |               |                     fixed-> ^
+                      |               |                             |
+                      |               |  "MSL_PLGA/TLGA/PUHF/MGA"   |
+                      |               |  ------------------------   |
+                      |               |               fixed-> ^     |
+                      |               |                       |     |
+                      |               |  "MSL_SPACECRAFT"     |     |
+                      |               |  ----------------     |     |
+                      |               |     ^ <-fixed         |     |
+                      |               |     |                 |     | 
+                      |               |     |   "MSL_CRUISE_STAGE"  |
+                      |               |     |   ------------------  |
+                      |               |     |     ^ <-fixed         |
+                      |               |     |     |                 |
+                      |               |     |     |   "MSL_DESCENT_STAGE"
+                      |               |     |     |   ------------------
+                 ck-> |               |     |     |     ^ <-fixed
+                      |               |     |     |     |
+                 "MSL_CACS"           |     |     |     |  "MSL_ROVER_MECH"
+                 ----------           |     |     |     |  ----------------
+                      ^               |     |     |     |     ^ <-fixed
+                 ck-> |          ck-> |     |     |     |     |             
+                      v               v                      
+                                 "MSL_ROVER"
+     +--------------------------------------------------------------+
+     |     |      |   |   |   |       |       |    | | |      |     | 
+     |     |<-fxd |   |   |   |<-fxd  |  fxd->|    | | | fxd->|     | 
+     |     v      |   |   |   V       |       V    | | |      v     |
+     | "MLS_RUHF" |   |   | "MSL_DAN" | "MSL_RAD"  | | | "MLS_RLGA" |
+     | ---------- |   |   | --------- | ---------  | | | ---------- |
+     |            |   |   |           |            | | |            | 
+     |    fixed-> |   |   | <-fixed   |    fixed-> | | | <-fixed    | 
+     |            V   |   V           |            V | V            | 
+     | "MSL_REMS_UVS" | "MSL_HAZCAM*" |  "MSL_MARDI" | "MSL_SAM"    | 
+     | -------------- | ------------- |  ----------- | ---------    | 
+     |                |               |              |              | 
+     |        fixed-> |               |              | <-fixed      | 
+     |                V               |              V              | 
+     |        "MSL_REMS_BOOM1/2"      |         "MSL_CHEMIN"        |
+     |        ----------------        |         ------------        | 
+     |                |               |                             | 
+     |        fixed-> |               |                             | 
+     |                V               |                             | 
+     |      "MSL_REMS_BOOM1/2_*"      |                             |
+     |      --------------------      |                             | 
+     |                                |                             | 
+     | <-fixed                        | <-fixed                     | <-fixed
+     V                                V                             V 
+  "MSL_RA_BASE"               "MSL_RSM_ZERO_AZ"              "MSL_HGA_ZERO_AZ"
+  -------------                ----------------              -----------------
+     |                                |                             | 
+     | <-ck                           | <-ck                        | <-ck
+     V                                V                             V 
+  "MSL_RA_SHOULDER_AZ"          "MSL_RSM_AZ"                  "MSL_HGA_AZ"
+  --------------------          ------------                  ------------
+     |                                |                             | 
+     | <-ck                           | <-fixed                     | <-fixed
+     V                                V                             V 
+  "MSL_RA_SHOULDER_EL"         "MSL_RSM_ZERO_EL"             "MSL_HGA_ZERO_EL"
+  --------------------         -----------------             -----------------
+     |                                |                             | 
+     | <-ck                           | <-ck                        | <-ck
+     V                                V                             V 
+  "MSL_RA_ELBOW"                "MSL_RSM_EL"                  "MSL_HGA_EL"
+  --------------                ------------                  ------------
+     |                                |                             | 
+     | <-ck                           |                             | <-fixed
+     V                                |                             V 
+  "MSL_RA_WRIST"                      |                         "MSL_HGA"
+  --------------                      |                         ---------
+     |                                |                             | 
+     |                                |                             | <-fixed
+     |                                |                             V
+     |                                |                       "MSL_HGA_EB"
+     |                                |                       ------------
+     |                                |
+     |                                | <-fixed
+     |                                V
+     |                           "MSL_RSM_HEAD"
+     |                +-------------------------------+
+     |                |               |               |
+     |                | <-fixed       | <-fixed       | <-fixed
+     |                V               V               V
+     |       "MSL_MASTCAM_*"    "MSL_NAVCAM_*"    "MSL_CHEMCAM_RMI"
+     |       ---------------    --------------   +------------------+
+     |                                           |                  |
+     |                                           | <-fixed          | <-fixed
+     |                                           V                  V
+     |                       "MSL_CHEMCAM_LIBS_LASER"   "MSL_CHEMCAM_LIBS_CAM"
+     |                       ------------------------   ----------------------
+     |              
+     | <-ck         
+     V              
+  "MSL_RA_TURRET"
+  ---------------------------------------------------------------------+
+     |                |               |               |                |
+     | <-ck           | <-ck          | <-ck          | <-ck           | <-ck
+     V                V               V               V                V
+  "MSL_MAHLI_REF" "MSL_APXS_REF" "MSL_PADS_REF" "MSL_DRT_REF" "MSL_CHIMRA_REF"
+  --------------- -------------- -------------- ------------- ----------------
+     |                |               |               |                |
+     | <-fixed        | <-fixed       | <-fixed       | <-fixed        | <-fxd
+     V                V               V               V                V
+  "MSL_MAHLI"      "MSL_APXS"      "MSL_PADS"       "MSL_DRT"    "MSL_CHIMRA"
+  -----------      ----------      ----------       ---------    ------------
+
+
+   
+MSL Surface Frames
+========================================================================
+
+   The surface frames layout in this version of the FK is based on the
+   assumption that the total traverse distance during the mission will
+   be relatively short (hundreds of meters, not kilometers) and,
+   therefore, the local north and nadir directions, defining surface
+   frame orientations, will be approximately the same at any point
+   along the traverse path. This assumption allows defining surface
+   frames as fixed offset frames with respect to each other and/or to
+   Mars body-fixed frame, IAU_MARS.
+
+
+Topocentric Frame
+-------------------------------------------------
+
+   MSL topocentric frame, MSL_TOPO, is defined as follows:
+
+      -- +Z axis is along the outward normal at the landing site ("zenith");
+
+      -- +X axis is along the local north direction ("north");
+
+      -- +Y axis completes the right hand frame ("west");
+
+      -- the origin of this frame is located at the landing site.
+
+   Orientation of the frame is given relative to the body fixed
+   rotating frame 'IAU_MARS' (x - along the line of zero longitude
+   intersecting the equator, z - along the spin axis, y - completing
+   the right hand coordinate frame.)
+
+   The transformation from 'MSL_TOPO' frame to 'IAU_MARS' frame is a
+   3-2-3 rotation with defined angles as the negative of the site
+   longitude, the negative of the site co-latitude, 180 degrees.
+
+   The landing site Gaussian longitude and latitude upon which the
+   definition is built are:
+
+      Lon = 137.441700 degrees East
+      Lat =  -4.643851 degrees North
+
+   The coordinates specified above are given with respect to the
+   'IAU_MARS' instance defined by the rotation/shape model from the the
+   PCK file 'pck00008.tpc'.
+
+   These keywords implement the frame definition.
+
+   \begindata
+
+       FRAME_MSL_TOPO             = -76900
+       FRAME_-76900_NAME           = 'MSL_TOPO'
+       FRAME_-76900_CLASS          =  4
+       FRAME_-76900_CLASS_ID       =  -76900
+       FRAME_-76900_CENTER         =  -76900
+
+       TKFRAME_-76900_RELATIVE     = 'IAU_MARS'
+       TKFRAME_-76900_SPEC         = 'ANGLES'
+       TKFRAME_-76900_UNITS        = 'DEGREES'
+       TKFRAME_-76900_AXES         = ( 3, 2, 3 )
+       TKFRAME_-76900_ANGLES       = ( -137.4417, -94.643851, 180.000  )
+
+   \begintext
+
+
+Local Level Frame
+-------------------------------------------------
+
+   MSL local level frame, MSL_LOCAL_LEVEL, is defined as follows:
+
+      -- +Z axis is along the downward normal at the landing site ("nadir");
+
+      -- +X axis is along the local north direction ("north");
+
+      -- +Y axis completes the right hand frame ("east");
+
+      -- the origin of this frame is located between the rover's middle
+         wheels and moves with the rover.
+ 
+   Since this frame is essentially the MSL_TOPO frame flipped by 180
+   degrees about +X ("north") to point +Z down, this frame is defined
+   as a fixed offset frame with respect to the MSL_TOPO frame.
+
+   \begindata
+
+      FRAME_MSL_LOCAL_LEVEL           = -76910
+      FRAME_-76910_NAME               = 'MSL_LOCAL_LEVEL'
+      FRAME_-76910_CLASS              = 4
+      FRAME_-76910_CLASS_ID           = -76910
+      FRAME_-76910_CENTER             = -76900
+      TKFRAME_-76910_RELATIVE         = 'MSL_TOPO'
+      TKFRAME_-76910_SPEC             = 'ANGLES'
+      TKFRAME_-76910_UNITS            = 'DEGREES'
+      TKFRAME_-76910_AXES             = (   1,       2,       3     )
+      TKFRAME_-76910_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+   \begintext
+
+
+Surface Fixed Frame
+-------------------------------------------------
+
+   MSL surface fixed frame -- MSL_SURFACE_FIXED -- is nominally
+   co-aligned in orientation with the MSL_LOCAL_LEVEL frame but its
+   origin does not move during the mission. Therefore, this frame is
+   defined as a zero-offset, fixed frame with respect to the MSL_LOCAL_LEVEL
+   frame.
+
+   \begindata
+
+      FRAME_MSL_SURFACE_FIXED         = -76920
+      FRAME_-76920_NAME               = 'MSL_SURFACE_FIXED'
+      FRAME_-76920_CLASS              = 4
+      FRAME_-76920_CLASS_ID           = -76920
+      FRAME_-76920_CENTER             = -76900
+      TKFRAME_-76920_RELATIVE         = 'MSL_LOCAL_LEVEL'
+      TKFRAME_-76920_SPEC             = 'ANGLES'
+      TKFRAME_-76920_UNITS            = 'DEGREES'
+      TKFRAME_-76920_AXES             = (   1,       2,       3     )
+      TKFRAME_-76920_ANGLES           = (   0.000,   0.000,   0.000 )
+
+   \begintext
+
+
+MSL Rover Frames
+========================================================================
+
+   The MSL rover NAV frame, MSL_ROVER, is defined as follows:
+
+      -  +X points to the front of the rover, away from RTG
+  
+      -  +Z points down
+
+      -  +Y completes the right handed frame
+
+      -  the origin on this frame is between the rover middle wheels
+         (midpoint between and on the rotation axis of the middle
+         wheels for deployed rover and suspension system on flat plane.
+
+   The MSL rover NAV frame is shown on these diagrams:
+
+      Rover -Y side view:
+      -------------------
+                               _
+                              | | RSM
+                              `-'
+                               |              HGA
+                               |          .```.         .
+                               |         |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-------------------'       .- 
+       o---------o--------o| |                   |    .-' 
+                             |.-------o----.     |-.-'
+                           .-`--------------`-.--' 
+                           |             .-----`o------.
+                         .-|-.         .-|-.         .-|-.
+                        |  o  |       |  o  |       |  o  |
+                         `._.'   <-------x.'         `._.'
+                                Xr       |
+                                         |
+                                         |
+                                      Zr v     Yr is into the page.
+
+
+      Rover -Z side ("top") view:
+      ---------------------------
+
+                        .-----.       .-----.       .-----.
+                        |     |       |     |       |     |
+                        |     |       |             |     |
+                        `--|--'       `-- Yr        `--|--'
+                           `----------o- ^ -----o------'
+                             ..-.------- | ------.
+                         RSM || |        |       |--------.
+                             || |        |       |-------.|
+          RA                 |`- <-------x       |       || RTG 
+       |                     |  Xr           HGA |-------'|
+      -o---------|--------|o-|            =====-o---------'
+       |                     `-------------------' 
+                           .----------o---------o------.
+                        .--|--.       .--|--.       .--|--.
+                        |     |       |     |       |     |
+                        |     |       |     |       |     |
+                        `-----'       `-----'       `-----'
+
+                                               Zr is into the page.
+
+
+   The orientation of this frame relative to other frames (J2000,
+   MSL_LOCAL_LEVEL) changes in time and is provided in CK files.
+   Therefore the MSL_ROVER frame is defined as a CK-based frame.
+
+   \begindata
+
+      FRAME_MSL_ROVER                 = -76000
+      FRAME_-76000_NAME               = 'MSL_ROVER'
+      FRAME_-76000_CLASS              = 3
+      FRAME_-76000_CLASS_ID           = -76000
+      FRAME_-76000_CENTER             = -76
+      CK_-76000_SCLK                  = -76
+      CK_-76000_SPK                   = -76
+
+   \begintext
+
+   The MSL rover mechanical frame -- MSL_ROVER_MECH -- is nominally
+   co-aligned in orientation with the rover NAV frame, MSL_ROVER. The
+   origin of this frame is different from the rover NAV frame origin
+   and is translated from it by a fixed offset along the Z axis,
+   provided in the MSL structures SPK file.
+
+   The MSL rover and rover mechanical frames are shown on this diagram:
+
+                               _
+                              | | RSM
+                              `-'
+                               |              HGA
+                               |          .```.         .
+                               |         |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-- <-------x ------'       .- 
+       o---------o--------o| |  Xrm      |       |    .-' 
+                             |.-------o- | .     |-.-'
+                           .-`---------- | -`-.--' 
+                           |         Zrm v ----`o------.
+                         .-|-.         .- -.         .-|-.
+                        |  o  |       |  o  |       |  o  |
+                         `._.'   <-------x.'         `._.'
+                                Xr       |
+                                         |
+                                         |
+                                      Zr v     Yr, Yrm are into the page.
+
+
+   The MSL_ROVER_MECH frame is defined below as fixed, zero-offset
+   frame relative to the MSL_ROVER frame.
+ 
+   \begindata
+
+      FRAME_MSL_ROVER_MECH            = -76040
+      FRAME_-76040_NAME               = 'MSL_ROVER_MECH'
+      FRAME_-76040_CLASS              = 4
+      FRAME_-76040_CLASS_ID           = -76040
+      FRAME_-76040_CENTER             = -76
+      TKFRAME_-76040_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76040_SPEC             = 'ANGLES'
+      TKFRAME_-76040_UNITS            = 'DEGREES'
+      TKFRAME_-76040_AXES             = (   1,       2,       3     )
+      TKFRAME_-76040_ANGLES           = (   0.000,   0.000,   0.000 )
+
+   \begintext
+
+
+MSL Cruise and Descent Frames
+========================================================================
+
+   The following three MSL cruise and descent frames -- MSL_SPACECRAFT,
+   MSL_CRUISE_STAGE, and MSL_DESCENT_STAGE -- are nominally co-aligned
+   in orientation with the rover NAV frame, MSL_ROVER. The origins of
+   these frames are different from the rover NAV frame origin and are
+   translated from it fixed offsets along the Z axis, provided in the
+   MSL structures SPK file.
+
+   These frames are defined below as fixed, zero-offset frames
+   relative to the MSL_ROVER frame.
+
+   \begindata
+
+      FRAME_MSL_SPACECRAFT            = -76010
+      FRAME_-76010_NAME               = 'MSL_SPACECRAFT'
+      FRAME_-76010_CLASS              = 4
+      FRAME_-76010_CLASS_ID           = -76010
+      FRAME_-76010_CENTER             = -76
+      TKFRAME_-76010_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76010_SPEC             = 'ANGLES'
+      TKFRAME_-76010_UNITS            = 'DEGREES'
+      TKFRAME_-76010_AXES             = (   1,       2,       3     )
+      TKFRAME_-76010_ANGLES           = (   0.000,   0.000,   0.000 )
+
+      FRAME_MSL_CRUISE_STAGE          = -76020
+      FRAME_-76020_NAME               = 'MSL_CRUISE_STAGE'
+      FRAME_-76020_CLASS              = 4
+      FRAME_-76020_CLASS_ID           = -76020
+      FRAME_-76020_CENTER             = -76
+      TKFRAME_-76020_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76020_SPEC             = 'ANGLES'
+      TKFRAME_-76020_UNITS            = 'DEGREES'
+      TKFRAME_-76020_AXES             = (   1,       2,       3     )
+      TKFRAME_-76020_ANGLES           = (   0.000,   0.000,   0.000 )
+
+      FRAME_MSL_DESCENT_STAGE         = -76030
+      FRAME_-76030_NAME               = 'MSL_DESCENT_STAGE'
+      FRAME_-76030_CLASS              = 4
+      FRAME_-76030_CLASS_ID           = -76030
+      FRAME_-76030_CENTER             = -76
+      TKFRAME_-76030_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76030_SPEC             = 'ANGLES'
+      TKFRAME_-76030_UNITS            = 'DEGREES'
+      TKFRAME_-76030_AXES             = (   1,       2,       3     )
+      TKFRAME_-76030_ANGLES           = (   0.000,   0.000,   0.000 )
+
+   \begintext
+
+   The MSL Cruise ACS frame, MSL_CACS, is defined as follows:
+
+      -  +Z is co-aligned with the +Z axis of the MSL_ROVER frame
+  
+      -  +Y is directly over the location of the cruise stage star
+         scanner
+
+      -  +X completes the right handed frame and is directly over the
+         B-string thruster cluster
+
+      -  the origin on this frame is the same as of the MSL_SPACECRAFT
+         frame.
+
+   Nominally this frame is rotated -135 degrees about +Z from the
+   MSL_ROVER frame. 
+
+   The relation ship between MSL rover and CACS frames is shown on
+   this diagram:
+
+                              Xcacs
+                            ^
+                             \         .> Ycacs 
+                              \     .-' 
+                               \ .-'
+                                x-------> Xr
+                                |
+                                |
+                                |
+                                v
+                                 Yr       Zr, Zcacs are into the page.
+
+
+   Because during cruise the orientation of this frame
+   relative the J2000 frame comes in telemetry and is provided in CK
+   files, this frame is defined as a CK-based frame.
+
+   \begindata
+
+      FRAME_MSL_CACS                  = -76050
+      FRAME_-76050_NAME               = 'MSL_CACS'
+      FRAME_-76050_CLASS              = 3
+      FRAME_-76050_CLASS_ID           = -76050
+      FRAME_-76050_CENTER             = -76
+      CK_-76050_SCLK                  = -76
+      CK_-76050_SPK                   = -76
+
+   \begintext
+
+
+MSL Antenna Frames
+========================================================================
+
+   This section defines frames for the MSL antennas -- Cruise X-band
+   Parachute Cone Low Gain Antenna (PLGA), Cruise X-band Tilted Low
+   Gain Antenna (TLGA), Cruise Parachute Cone UHF Antenna (PUHF),
+   Cruise Medium Gain Antenna (MGA), X-band Descent Stage Low Gain
+   Antenna (DLGA), Descent Stage UHF Antenna (DUHF), X-band Rover Low
+   Gain Antenna (RLGA), Rover UHF Antenna (RUHF), X-band High Gain
+   Antenna (HGA).
+
+Cruise Antennas
+-------------------------------------------------
+
+   The frames for antennas mounted on the MSL cruise stage and
+   parachute capsule -- MSL_PLGA, MSL_TLGA, MSL_PUHF, MSL_MGA -- are
+   fixed with respect to the cruise stage frame, MSL_CRUISE_STAGE, and
+   defined as follows:
+
+      -  +Z is the antenna boresight, which is nominally along the
+         cruise stage -Z except for TLGA
+  
+      -  +X is nominally co-aligned with the the cruise stage +X,
+         except for TLGA
+
+      -  +Y completes the right handed frame
+
+      -  the origin is at the center of the antenna side farthest from
+         the mounting plate (rim, tip, etc).
+
+   The MSL_PLGA, MSL_PUHF, and MSL_MGA frames are rotated by 180 degrees 
+   about +X from the MSL_CRUISE_STAGE frame.
+
+   The MSL_TLGA frame is first rotated by 180 degrees about +X, then by
+   -17.5 (TBD) degrees about +Y from the MSL_CRUISE_STAGE frame.
+
+   These frames are defined below as fixed frames relative to the
+   MSL_CRUISE_STAGE frame.
+
+   \begindata
+
+      FRAME_MSL_PLGA                  = -76060
+      FRAME_-76060_NAME               = 'MSL_PLGA'
+      FRAME_-76060_CLASS              = 4
+      FRAME_-76060_CLASS_ID           = -76060
+      FRAME_-76060_CENTER             = -76
+      TKFRAME_-76060_RELATIVE         = 'MSL_CRUISE_STAGE'
+      TKFRAME_-76060_SPEC             = 'ANGLES'
+      TKFRAME_-76060_UNITS            = 'DEGREES'
+      TKFRAME_-76060_AXES             = (   1,       2,       3     )
+      TKFRAME_-76060_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+      FRAME_MSL_TLGA                  = -76061
+      FRAME_-76061_NAME               = 'MSL_TLGA'
+      FRAME_-76061_CLASS              = 4
+      FRAME_-76061_CLASS_ID           = -76061
+      FRAME_-76061_CENTER             = -76
+      TKFRAME_-76061_RELATIVE         = 'MSL_CRUISE_STAGE'
+      TKFRAME_-76061_SPEC             = 'ANGLES'
+      TKFRAME_-76061_UNITS            = 'DEGREES'
+      TKFRAME_-76061_AXES             = (   1,       2,       3     )
+      TKFRAME_-76061_ANGLES           = ( 180.000,  17.500,   0.000 )
+
+      FRAME_MSL_PUHF                  = -76062
+      FRAME_-76062_NAME               = 'MSL_PUHF'
+      FRAME_-76062_CLASS              = 4
+      FRAME_-76062_CLASS_ID           = -76062
+      FRAME_-76062_CENTER             = -76
+      TKFRAME_-76062_RELATIVE         = 'MSL_CRUISE_STAGE'
+      TKFRAME_-76062_SPEC             = 'ANGLES'
+      TKFRAME_-76062_UNITS            = 'DEGREES'
+      TKFRAME_-76062_AXES             = (   1,       2,       3     )
+      TKFRAME_-76062_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+      FRAME_MSL_MGA                   = -76063
+      FRAME_-76063_NAME               = 'MSL_MGA'
+      FRAME_-76063_CLASS              = 4
+      FRAME_-76063_CLASS_ID           = -76063
+      FRAME_-76063_CENTER             = -76
+      TKFRAME_-76063_RELATIVE         = 'MSL_CRUISE_STAGE'
+      TKFRAME_-76063_SPEC             = 'ANGLES'
+      TKFRAME_-76063_UNITS            = 'DEGREES'
+      TKFRAME_-76063_AXES             = (   1,       2,       3     )
+      TKFRAME_-76063_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+   \begintext
+
+
+EDL Antennas
+-------------------------------------------------
+
+   The frames for the antennas mounted on the MSL descent stage --
+   MSL_DLGA, MSL_DUHF -- are fixed with respect to the descent stage
+   frame, MSL_DESCENT_STAGE, and defined as follows:
+
+      -  +Z is the antenna boresight, nominally along the descent stage
+         -Z
+  
+      -  +X is nominally co-aligned with the the descent stage +X
+
+      -  +Y completes the right handed frame
+
+      -  the origin is at the center of the antenna side farthest from
+         the mounting plate (rim, tip, etc).
+
+   The MSL_DLGA and MSL_DUHF frames are rotated by 180 degrees about +X
+   from the MSL_DESCENT_STAGE frame.
+
+   These frames are defined below as fixed frames relative to the
+   MSL_DESCENT_STAGE frame.
+
+   \begindata
+
+      FRAME_MSL_DLGA                  = -76064
+      FRAME_-76064_NAME               = 'MSL_DLGA'
+      FRAME_-76064_CLASS              = 4
+      FRAME_-76064_CLASS_ID           = -76064
+      FRAME_-76064_CENTER             = -76
+      TKFRAME_-76064_RELATIVE         = 'MSL_DESCENT_STAGE'
+      TKFRAME_-76064_SPEC             = 'ANGLES'
+      TKFRAME_-76064_UNITS            = 'DEGREES'
+      TKFRAME_-76064_AXES             = (   1,       2,       3     )
+      TKFRAME_-76064_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+      FRAME_MSL_DUHF                  = -76065
+      FRAME_-76065_NAME               = 'MSL_DUHF'
+      FRAME_-76065_CLASS              = 4
+      FRAME_-76065_CLASS_ID           = -76065
+      FRAME_-76065_CENTER             = -76
+      TKFRAME_-76065_RELATIVE         = 'MSL_DESCENT_STAGE'
+      TKFRAME_-76065_SPEC             = 'ANGLES'
+      TKFRAME_-76065_UNITS            = 'DEGREES'
+      TKFRAME_-76065_AXES             = (   1,       2,       3     )
+      TKFRAME_-76065_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+   \begintext
+
+
+Rover Antennas
+-------------------------------------------------
+
+   The frames for the two MSL non-articulating antennas mounted on the
+   rover body -- MSL_RLGA, MSL_RUHF -- are fixed with respect to the
+   rover frame, MSL_ROVER, and defined as follows:
+
+      -  +Z is the antenna boresight, nominally along the rover -Z
+  
+      -  +X is nominally co-aligned with the the rover +X
+
+      -  +Y completes the right handed frame
+
+      -  the origin is at the center of the antenna side farthest from
+         the mounting plate (rim, tip, etc).
+
+   The MSL_RLGA and MSL_RUHF frames are rotated by 180 degrees about +X
+   from the MSL_ROVER frame.
+
+   These frames are defined below as fixed frames relative to the
+   MSL_ROVER frame.
+
+   \begindata
+
+      FRAME_MSL_RLGA                  = -76110
+      FRAME_-76110_NAME               = 'MSL_RLGA'
+      FRAME_-76110_CLASS              = 4
+      FRAME_-76110_CLASS_ID           = -76110
+      FRAME_-76110_CENTER             = -76
+      TKFRAME_-76110_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76110_SPEC             = 'ANGLES'
+      TKFRAME_-76110_UNITS            = 'DEGREES'
+      TKFRAME_-76110_AXES             = (   1,       2,       3     )
+      TKFRAME_-76110_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+      FRAME_MSL_RUHF                  = -76111
+      FRAME_-76111_NAME               = 'MSL_RUHF'
+      FRAME_-76111_CLASS              = 4
+      FRAME_-76111_CLASS_ID           = -76111
+      FRAME_-76111_CENTER             = -76
+      TKFRAME_-76111_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76111_SPEC             = 'ANGLES'
+      TKFRAME_-76111_UNITS            = 'DEGREES'
+      TKFRAME_-76111_AXES             = (   1,       2,       3     )
+      TKFRAME_-76111_ANGLES           = ( 180.000,   0.000,   0.000 )
+
+   \begintext
+
+
+   The frame chain for the MSL articulating high gain antenna (HGA)
+   includes six frames -- MSL_HGA_ZERO_AZ, MSL_HGA_AZ, MSL_HGA_ZERO_EL,
+   MSL_HGA_EL, MSL_HGA, and MSL_HGA_EB.
+
+   Only the first frame -- MSL_HGA_ZERO_AZ -- and the final two frames
+   -- MSL_HGA and MSL_HGA_EB -- match the frames defined in [4] and
+   used in the HGA calibration documentation. The intermediate frames
+   not matching the documentation were introduced model the HGA
+   pointing using a more traditional kinematics approach.
+
+   The MSL_HGA_ZERO_AZ frame (called HGAS frame in [4]) is a fixed
+   offset frame that has the +Z axis along the AZ rotation axis and the
+   +X axis in the direction of the EL rotation axis for the HGA in the
+   zero AZ/EL position. This frame is nominally rotated from the
+   MSL_ROVER frame by +25 degrees about +Z.
+
+   The MSL_HGA_AZ frame is a CK-based frame rotated from the
+   MSL_HGA_ZERO_AZ frame by the -AZ angle about the +Z axis.
+
+   The MSL_HGA_ZERO_EL frame is a fixed offset frame that has the +X axis
+   along the EL rotation axis and the +Z axis in the direction of the AZ
+   rotation axis. This frame is nominally co-aligned with the MSL_HGA_AZ 
+   frame.
+
+   The MSL_HGA_EL frame is a CK-based frame rotated from the
+   MSL_HGA_ZERO_EL frame by the EL angle about the +X axis.
+
+   The MSL_HGA frame (called ANT frame in [4]) is a fixed-offset frame
+   nominally rotated from the MSL_HGA_EL frame by 180 degrees about the
+   +X axis to align the +Z axis of the frame with the antenna boresight
+   defined as the normal to the antenna's radiating surface.
+
+   The MSL_HGA_EB frame (called EB frame in [4]) is a fixed offset
+   frame nominally co-aligned with the MSL_HGA frame. This frame's +Z
+   axis is the antenna boresight defined as the antenna electric
+   boresight.
+
+   The HGA frames for the HGA in zero AZ/EL position are shown on this
+   diagram:
+
+      Rover -Z side ("top") view, HGA in zero AZ/EL position:
+      -------------------------------------------------------
+
+                        .-----.       .-----.       .-----.
+                        |     |       |     |       |     |
+                        |     |       |             |     |
+                        `--|--'       `-- Yr        `--|--'
+                           `----------o- ^ -----o------'
+                             ..-.------- | ------.
+                         RSM || |        |         +Yhgaaz*,el*
+                             || |        | +Xhga*  ^   --.|
+          RA                 |`- <-------x<.```.  /      || RTG 
+       |                     |  Xr        | `o. |/  -----'|
+      -o---------|--------|o-|             `/_.'x. -------'
+       |                     `-------------/-----
+                           .----------o-  v  ----------.
+                        .--|--.       .-  +Yhga,eb  .--|--.
+                        |     |       |             |     |
+                        |     |       |     |       |     |
+                        `-----'       `-----'       `-----'
+
+                     Zr, Zhgaaz0, Zhgaaz, Zhgael0, Zhgael are into the page.
+                                Zhga, Zhgaeb are out of the page.
+
+
+      HGA assembly "side" view, HGA in zero AZ/EL position:
+      -----------------------------------------------------
+
+                                      Azimuth
+                    +Zhga,eb         rotation
+                   ^                   axis
+                   |                     |
+       .-----------|-----------..--------|--------.-----
+       | Xhga,eb   |         Xhgael0,el    Yhgael0,al   |---.     Elevation  
+       |    <------o        ----  <------x   -----------------     rotation 
+       |            Yhga,eb    |_/       |    |   |     |---'       axis    
+       `-----------------------.         |    |   |-----'
+                           .'.'          |    |   |
+                     .   .'.'            v Zhgael0,el 
+                     \\.'.'                   |   |
+                      \.'      .-------------------.
+                               `-------------------'
+                                 |               |
+                                  |             |
+       -------------------------- <------x ---------------
+         Rover deck          Xhgaaz0,az  | Yhgaaz0,az
+                                         |
+                                         |
+                                         v Zhgaaz0,az
+
+                                         Yhgag, Yhga are out of the page.
+
+
+   The MSL_HGA_AZ, MSL_HGA_ZERO_EL, and MSL_HGA_EL frames are
+   co-aligned with the MSL_HGA_ZERO_AZ frame in the zero AZ/EL
+   position.
+
+   The nominal nominal offset angles for the fixed offset frames in the
+   HGA frame chain are:
+
+      TKFRAME_-76121_ANGLES           = ( -25.0,   0.0,   0.0 )
+      TKFRAME_-76121_AXES             = (   3,     1,     2   )
+
+      TKFRAME_-76123_ANGLES           = (   0.0,   0.0,   0.0 )
+      TKFRAME_-76123_AXES             = (   3,     1,     2   )
+
+      TKFRAME_-76125_ANGLES           = (   0.0,   0.0, 180.0 )
+      TKFRAME_-76125_AXES             = (   2,     3,     1   )
+
+      TKFRAME_-76126_ANGLES           = (   0.0,   0.0,   0.0 )
+      TKFRAME_-76126_AXES             = (   3,     1,     3   )
+
+   The actual offset angles were derived from the following HGA base frame
+   quaternion, directions of the HGA AZ and EL axes in the rover
+   frame at "zero" AZ position and HGA calibrated maximum transmission
+   gain direction (from [6] and [7]):
+
+      base_q1        0.0015877
+      base_q2       -0.0009219
+      base_q3       -0.2166469
+      base_q4        0.9762428
+      az_axis_x     -0.0007
+      az_axis_y     -0.0012
+      az_axis_z      1.0000
+      el_axis_x      0.9099
+      el_axis_y      0.4148
+      el_axis_z      0.0006
+      el_azimuth     0.0
+
+      [Tx]=          0.999955833 0.000000000 -0.009398543
+                    -0.000023669 0.999996829 -0.002518213
+                     0.009398513 0.002518324 0.999952662
+
+   The frame definitions below incorporate the actual offsets.
+
+   \begindata
+
+      FRAME_MSL_HGA_ZERO_AZ           = -76121
+      FRAME_-76121_NAME               = 'MSL_HGA_ZERO_AZ'
+      FRAME_-76121_CLASS              = 4
+      FRAME_-76121_CLASS_ID           = -76121
+      FRAME_-76121_CENTER             = -76
+      TKFRAME_-76121_SPEC             = 'ANGLES'
+      TKFRAME_-76121_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76121_ANGLES           = (  -24.507049,  -0.045924,   0.065014 )
+      TKFRAME_-76121_AXES             = (    3,          1,          2        )
+      TKFRAME_-76121_UNITS            = 'DEGREES'
+
+      FRAME_MSL_HGA_AZ                = -76122
+      FRAME_-76122_NAME               = 'MSL_HGA_AZ'
+      FRAME_-76122_CLASS              = 3
+      FRAME_-76122_CLASS_ID           = -76122
+      FRAME_-76122_CENTER             = -76
+      CK_-76122_SCLK                  = -76
+      CK_-76122_SPK                   = -76
+
+      FRAME_MSL_HGA_ZERO_EL           = -76123
+      FRAME_-76123_NAME               = 'MSL_HGA_ZERO_EL'
+      FRAME_-76123_CLASS              = 4
+      FRAME_-76123_CLASS_ID           = -76123
+      FRAME_-76123_CENTER             = -76
+      TKFRAME_-76123_SPEC             = 'ANGLES'
+      TKFRAME_-76123_RELATIVE         = 'MSL_HGA_AZ'
+      TKFRAME_-76123_ANGLES           = (    0.000000,  -0.000000,  -0.030636 )
+      TKFRAME_-76123_AXES             = (    3,          1,          2        )
+      TKFRAME_-76123_UNITS            = 'DEGREES'
+
+      FRAME_MSL_HGA_EL                = -76124
+      FRAME_-76124_NAME               = 'MSL_HGA_EL'
+      FRAME_-76124_CLASS              = 3
+      FRAME_-76124_CLASS_ID           = -76124
+      FRAME_-76124_CENTER             = -76
+      CK_-76124_SCLK                  = -76
+      CK_-76124_SPK                   = -76
+
+      FRAME_MSL_HGA                   = -76125
+      FRAME_-76125_NAME               = 'MSL_HGA'
+      FRAME_-76125_CLASS              = 4
+      FRAME_-76125_CLASS_ID           = -76125
+      FRAME_-76125_CENTER             = -76
+      TKFRAME_-76125_SPEC             = 'ANGLES'
+      TKFRAME_-76125_RELATIVE         = 'MSL_HGA_EL'
+      TKFRAME_-76125_ANGLES           = (  -0.177348,  -0.517152, -179.798057 )
+      TKFRAME_-76125_AXES             = (    2,          3,          1        )
+      TKFRAME_-76125_UNITS            = 'DEGREES'
+
+      FRAME_MSL_HGA_EB                = -76126
+      FRAME_-76126_NAME               = 'MSL_HGA_EB'
+      FRAME_-76126_CLASS              = 4
+      FRAME_-76126_CLASS_ID           = -76126
+      FRAME_-76126_CENTER             = -76
+      TKFRAME_-76126_SPEC             = 'ANGLES'
+      TKFRAME_-76126_RELATIVE         = 'MSL_HGA'
+      TKFRAME_-76126_ANGLES           = (   75.000000,   0.557500, -75.000677 )
+      TKFRAME_-76126_AXES             = (    3,          1,          3        )
+      TKFRAME_-76126_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+Rover-mounted Instrument Frames
+========================================================================
+
+   This section defines frames for the instruments and structures
+   mounted on the rover body -- Hazard Avoidance Cameras (HAZCAMs),
+   Radiation Assessment Detector (RAD), Mars Descent Imager (MARDI), UV
+   and pressure sensors of the Rover Environmental Monitoring Station
+   (REMS/UVS, REMS/PS), Dynamic Albedo of Neutrons experiment (DAN),
+   Sample Analysis at Mars Instrument Suite (SAM), and Chemistry &
+   Mineralogy X-Ray Diffraction/X-Ray Fluorescence Instrument (CHEMIN).
+
+
+HAZCAMs
+-------------------------------------------------
+
+   The frame for each of the eight MSL HAZCAMs (FRONT/REAR - LEFT/RIGHT
+   - A/B) is defined as follows:
+
+      -- +Z axis is along the camera's central pixel view direction 
+         ("into image");
+
+      -- +Y axis is along the image central column and points from the
+         image center toward the image top row ("up");
+
+      -- +X completes the right hand frame and is along the image central
+         row and points from the image center toward the image left 
+         column ("left");
+
+      -- the origin of the frame is located at the camera focal point.
+
+   This diagram illustrates rover HAZCAM frames:
+
+      Rover -Y side view:
+      -------------------
+                               _
+                              | | RSM
+                              `-'
+                               |              HGA
+                               |          .```.   
+                               |         |  o  ---
+          RA       Yhcf        |          `._.' |         Yhcr 
+      -|-             <.     .-------------------'      .>   
+       o---------o-     `.   |                   |    .' 
+                          `. | -------o----.     |  .'
+                            o`--------------`-.--'x'
+                          .'             .-----`   `.   
+                        .'             .-|-.         `.   
+                      <'              |  o  |          `> 
+                  Zhcf           <-------x.'              Zhcr
+                               Xr        |
+                                         |
+                                         |
+                                      Zr v     Xhcr are into the page.
+                                               Xhcf are out of the page.
+
+
+   Since all HAZCAMs are rigidly mounted on the rover body, their frames 
+   are defined as fixed offset frames with orientation given with respect 
+   to the rover frame.
+
+   The nominal orientation for the HAZCAM frames are with
+   boresight in the direction of the rover +X and tilted 45 degrees
+   toward the ground for FRONT HAZCAMs and in the direction of -X  and
+   tilted 45 degrees toward the ground for REAR HAZCAMs. The
+   following sets of keywords can be incorporated into the frame
+   definitions to provide this nominal orientation (provided for
+   reference only):
+
+      TKFRAME_-76131_ANGLES           = ( 0.0, -45.0,  90.0 )
+      TKFRAME_-76131_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76132_ANGLES           = ( 0.0, -45.0,  90.0 )
+      TKFRAME_-76132_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76133_ANGLES           = ( 0.0, -45.0,  90.0 )
+      TKFRAME_-76133_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76134_ANGLES           = ( 0.0, -45.0,  90.0 )
+      TKFRAME_-76134_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76141_ANGLES           = ( 0.0,  45.0, -90.0 )
+      TKFRAME_-76141_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76142_ANGLES           = ( 0.0,  45.0, -90.0 )
+      TKFRAME_-76142_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76143_ANGLES           = ( 0.0,  45.0, -90.0 )
+      TKFRAME_-76143_AXES             = ( 1,     2,     3   )
+
+      TKFRAME_-76144_ANGLES           = ( 0.0,  45.0, -90.0 )
+      TKFRAME_-76144_AXES             = ( 1,     2,     3   )
+
+
+   The actual MSL_HAZCAM_FRONT_LEFT_A frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_003_SN_0205-FHAZL-FLIGHT-RCE-A.cahvore'. According to
+   this model the reference frame, MSL_ROVER, can be transformed into
+   the camera frame, MSL_HAZCAM_FRONT_LEFT_A, by the following sequence
+   of rotations: first by 46.52247224 degrees about Y, then by
+   -0.75466490 degrees about X, and finally by -89.62067207 degrees
+   about Z.
+
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_FRONT_LEFT_A    = -76131
+      FRAME_-76131_NAME               = 'MSL_HAZCAM_FRONT_LEFT_A'
+      FRAME_-76131_CLASS              = 4
+      FRAME_-76131_CLASS_ID           = -76131
+      FRAME_-76131_CENTER             = -76
+      TKFRAME_-76131_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76131_SPEC             = 'ANGLES'
+      TKFRAME_-76131_UNITS            = 'DEGREES'
+      TKFRAME_-76131_AXES             = (    2,        1,        3     )
+      TKFRAME_-76131_ANGLES           = (  -46.522,    0.755,   89.621 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_FRONT_LEFT_B frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_003_SN_0208-FHAZL-FLIGHT-RCE-B.cahvore'. According to
+   this model the reference frame, MSL_ROVER, can be transformed into
+   the camera frame, MSL_HAZCAM_FRONT_LEFT_B, by the following sequence
+   of rotations: first by 45.49902630 degrees about Y, then by
+   -1.29539651 degrees about X, and finally by -89.95051513 degrees
+   about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_FRONT_LEFT_B    = -76133
+      FRAME_-76133_NAME               = 'MSL_HAZCAM_FRONT_LEFT_B'
+      FRAME_-76133_CLASS              = 4
+      FRAME_-76133_CLASS_ID           = -76133
+      FRAME_-76133_CENTER             = -76
+      TKFRAME_-76133_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76133_SPEC             = 'ANGLES'
+      TKFRAME_-76133_UNITS            = 'DEGREES'
+      TKFRAME_-76133_AXES             = (    2,        1,        3     )
+      TKFRAME_-76133_ANGLES           = (  -45.499,    1.295,   89.951 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_FRONT_RIGHT_A frame orientation provided in
+   the frame definition below was computed using the CAHVOR(E) camera
+   model file, 'MSL_CAL_003_SN_0213-FHAZR-FLIGHT-RCE-A.cahvore'.
+   According to this model the reference frame, MSL_ROVER, can be
+   transformed into the camera frame, MSL_HAZCAM_FRONT_RIGHT_A, by the
+   following sequence of rotations: first by 46.24015677 degrees about
+   Y, then by 0.01873572 degrees about X, and finally by -89.99878481
+   degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_FRONT_RIGHT_A   = -76132
+      FRAME_-76132_NAME               = 'MSL_HAZCAM_FRONT_RIGHT_A'
+      FRAME_-76132_CLASS              = 4
+      FRAME_-76132_CLASS_ID           = -76132
+      FRAME_-76132_CENTER             = -76
+      TKFRAME_-76132_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76132_SPEC             = 'ANGLES'
+      TKFRAME_-76132_UNITS            = 'DEGREES'
+      TKFRAME_-76132_AXES             = (    2,        1,        3     )
+      TKFRAME_-76132_ANGLES           = (  -46.240,   -0.019,   89.999 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_FRONT_RIGHT_B frame orientation provided in
+   the frame definition below was computed using the CAHVOR(E) camera
+   model file, 'MSL_CAL_003_SN_0209-FHAZR-FLIGHT-RCE-B.cahvore'.
+   According to this model the reference frame, MSL_ROVER, can be
+   transformed into the camera frame, MSL_HAZCAM_FRONT_RIGHT_B, by the
+   following sequence of rotations: first by 45.15683382 degrees about
+   Y, then by -0.35151197 degrees about X, and finally by -90.27295863
+   degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_FRONT_RIGHT_B   = -76134
+      FRAME_-76134_NAME               = 'MSL_HAZCAM_FRONT_RIGHT_B'
+      FRAME_-76134_CLASS              = 4
+      FRAME_-76134_CLASS_ID           = -76134
+      FRAME_-76134_CENTER             = -76
+      TKFRAME_-76134_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76134_SPEC             = 'ANGLES'
+      TKFRAME_-76134_UNITS            = 'DEGREES'
+      TKFRAME_-76134_AXES             = (    2,        1,        3     )
+      TKFRAME_-76134_ANGLES           = (  -45.157,    0.352,   90.273 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_BACK_LEFT_A frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_003_SN_0211-RHAZL-FLIGHT-RCE-A.cahvore'. According to
+   this model the reference frame, MSL_ROVER, can be transformed into
+   the camera frame, MSL_HAZCAM_BACK_LEFT_A, by the following sequence
+   of rotations: first by -45.06141007 degrees about Y, then by
+   1.82024949 degrees about X, and finally by 90.60566349 degrees about
+   Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_BACK_LEFT_A     = -76141
+      FRAME_-76141_NAME               = 'MSL_HAZCAM_BACK_LEFT_A'
+      FRAME_-76141_CLASS              = 4
+      FRAME_-76141_CLASS_ID           = -76141
+      FRAME_-76141_CENTER             = -76
+      TKFRAME_-76141_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76141_SPEC             = 'ANGLES'
+      TKFRAME_-76141_UNITS            = 'DEGREES'
+      TKFRAME_-76141_AXES             = (    2,        1,        3     )
+      TKFRAME_-76141_ANGLES           = (   45.061,   -1.820,  -90.606 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_BACK_LEFT_B frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_003_SN_0212-RHAZL-FLIGHT-RCE-B.cahvore'. According to
+   this model the reference frame, MSL_ROVER, can be transformed into
+   the camera frame, MSL_HAZCAM_BACK_LEFT_B, by the following sequence
+   of rotations: first by -45.44850801 degrees about Y, then by
+   0.39620359 degrees about X, and finally by 90.00485341 degrees about
+   Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_BACK_LEFT_B     = -76143
+      FRAME_-76143_NAME               = 'MSL_HAZCAM_BACK_LEFT_B'
+      FRAME_-76143_CLASS              = 4
+      FRAME_-76143_CLASS_ID           = -76143
+      FRAME_-76143_CENTER             = -76
+      TKFRAME_-76143_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76143_SPEC             = 'ANGLES'
+      TKFRAME_-76143_UNITS            = 'DEGREES'
+      TKFRAME_-76143_AXES             = (    2,        1,        3     )
+      TKFRAME_-76143_ANGLES           = (   45.449,   -0.396,  -90.005 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_BACK_RIGHT_A frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_003_SN_0217-RHAZR-FLIGHT-RCE-A.cahvore'. According to
+   this model the reference frame, MSL_ROVER, can be transformed into
+   the camera frame, MSL_HAZCAM_BACK_RIGHT_A, by the following sequence
+   of rotations: first by -46.45607709 degrees about Y, then by
+   1.48194872 degrees about X, and finally by 90.38345774 degrees about
+   Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_BACK_RIGHT_A    = -76142
+      FRAME_-76142_NAME               = 'MSL_HAZCAM_BACK_RIGHT_A'
+      FRAME_-76142_CLASS              = 4
+      FRAME_-76142_CLASS_ID           = -76142
+      FRAME_-76142_CENTER             = -76
+      TKFRAME_-76142_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76142_SPEC             = 'ANGLES'
+      TKFRAME_-76142_UNITS            = 'DEGREES'
+      TKFRAME_-76142_AXES             = (    2,        1,        3     )
+      TKFRAME_-76142_ANGLES           = (   46.456,   -1.482,  -90.383 )
+
+   \begintext
+
+
+   The actual MSL_HAZCAM_BACK_RIGHT_B frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_003_SN_0207-RHAZR-FLIGHT-RCE-B.cahvore'. According to
+   this model the reference frame, MSL_ROVER, can be transformed into
+   the camera frame, MSL_HAZCAM_BACK_RIGHT_B, by the following sequence
+   of rotations: first by -43.65002223 degrees about Y, then by
+   -0.44628107 degrees about X, and finally by 89.00921165 degrees
+   about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_HAZCAM_BACK_RIGHT_B    = -76144
+      FRAME_-76144_NAME               = 'MSL_HAZCAM_BACK_RIGHT_B'
+      FRAME_-76144_CLASS              = 4
+      FRAME_-76144_CLASS_ID           = -76144
+      FRAME_-76144_CENTER             = -76
+      TKFRAME_-76144_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76144_SPEC             = 'ANGLES'
+      TKFRAME_-76144_UNITS            = 'DEGREES'
+      TKFRAME_-76144_AXES             = (    2,        1,        3     )
+      TKFRAME_-76144_ANGLES           = (   43.650,    0.446,  -89.009 )
+
+   \begintext
+
+
+RAD
+-------------------------------------------------
+
+   The RAD frame -- MSL_RAD -- is fixed with respect to the rover
+   frame, MSL_ROVER, and defined as follows:
+
+      -  +Z is the instrument boresight, nominally along the rover -Z
+  
+      -  +X is nominally co-aligned with the the rover +X
+
+      -  +Y completes the right handed frame
+
+      -  the origin is at the intersection of the instrument FOV center
+         axis and the rover deck plane.
+
+   The MSL_RAD frame is rotated by 180 degrees about +X from the
+   MSL_ROVER frame.
+
+   \begindata
+
+      FRAME_MSL_RAD                   = -76150
+      FRAME_-76150_NAME               = 'MSL_RAD'
+      FRAME_-76150_CLASS              = 4
+      FRAME_-76150_CLASS_ID           = -76150
+      FRAME_-76150_CENTER             = -76
+      TKFRAME_-76150_SPEC             = 'ANGLES'
+      TKFRAME_-76150_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76150_ANGLES           = ( 180.0, 0.0, 0.0 )
+      TKFRAME_-76150_AXES             = (   1,   2,   3   )
+      TKFRAME_-76150_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+MARDI
+-------------------------------------------------
+
+   The frame for MARDI -- MSL_MARDI -- is defined as follows:
+
+      -- +Z axis is along the camera's central pixel view direction 
+         ("into image");
+
+      -- +Y axis is along the image central column and points from the
+         image center toward the image top row ("up");
+
+      -- +X completes the right hand frame and is along the image central
+         row and points from the image center toward the image left 
+         column ("left");
+
+      -- the origin of the frame is located at the camera focal point.
+
+   This diagram illustrates the MARDI frame:
+
+      Rover -Y side view:
+      -------------------
+                               _
+                              | | RSM
+                              `-'
+                               |              HGA
+                               |          .```.         .
+                               |         |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-------------------'       .- 
+       o---------o--------o| |                   |    .-' 
+                             |.-------o----.     |-.-'
+                             `x------->-----`-.--' 
+                              |  Ymardi  .-----`o------.
+                              |        .-|-.         .-|-.
+                              |       |  o  |       |  o  |
+                              v  <-------x.'         `._.'
+                        Zmardi   Xr      |
+                                         |
+                                         |
+                                      Zr v     Yr is into the page.
+                                               Xmardi is into the page.
+
+   Since MARDI are rigidly mounted on the rover body, its frame is
+   defined as fixed offset frames with orientation given with respect
+   to the rover frame.
+
+   Nominally the MARDI frame is rotated by 90 degrees about Z relative 
+   to the rover frame. This nominal orientation can be defined using the
+   following angles:
+
+      TKFRAME_-76160_ANGLES           = ( 0.0, 0.0, -90.0 )
+      TKFRAME_-76160_AXES             = ( 1,   2,     3   )
+
+
+   The actual MSL_MARDI frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_002_SN_3001-MARDI-FLIGHT.cahvor'. According to this model
+   the reference frame, MSL_ROVER, can be transformed into the camera
+   frame, MSL_MARDI, by the following sequence of rotations: first by
+   0.60374856 degrees about Y, then by 0.35729881 degrees about X, and
+   finally by 89.88147298 degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_MARDI                  = -76160
+      FRAME_-76160_NAME               = 'MSL_MARDI'
+      FRAME_-76160_CLASS              = 4
+      FRAME_-76160_CLASS_ID           = -76160
+      FRAME_-76160_CENTER             = -76
+      TKFRAME_-76160_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76160_SPEC             = 'ANGLES'
+      TKFRAME_-76160_UNITS            = 'DEGREES'
+      TKFRAME_-76160_AXES             = (    2,        1,        3     )
+      TKFRAME_-76160_ANGLES           = (   -0.604,   -0.357,  -89.881 )
+
+   \begintext
+
+
+REMS UVS
+--------
+
+   The REMS/UVS frame -- MSL_REMS_UVS -- is fixed with respect to the
+   rover frame, MSL_ROVER, and defined as follows:
+
+      -  +Z is the instrument boresight, nominally along the rover -Z
+  
+      -  +X is nominally co-aligned with the the rover +X
+
+      -  +Y completes the right handed frame
+
+      -  the origin is at the intersection of the instrument FOV center
+         axis and the rover deck plane.
+
+   The MSL_REMS_UVS frame is rotated by 180 degrees about +X from the
+   MSL_ROVER frame.
+
+   \begindata
+
+      FRAME_MSL_REMS_UVS              = -76170
+      FRAME_-76170_NAME               = 'MSL_REMS_UVS'
+      FRAME_-76170_CLASS              = 4
+      FRAME_-76170_CLASS_ID           = -76170
+      FRAME_-76170_CENTER             = -76
+      TKFRAME_-76170_SPEC             = 'ANGLES'
+      TKFRAME_-76170_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76170_ANGLES           = ( 180.0, 0.0, 0.0 )
+      TKFRAME_-76170_AXES             = (   1,   2,   3   )
+      TKFRAME_-76170_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+DAN
+-------------------------------------------------
+
+   The DAN frame -- MSL_DAN -- is fixed with respect to the rover
+   frame, MSL_ROVER, and defined as follows:
+
+      -  +Z is the instrument boresight, nominally along the rover +Z
+  
+      -  +X is nominally co-aligned with the the rover +X
+
+      -  +Y completes the right handed frame
+
+      -  the origin is at the intersection of the instrument FOV center
+         axis and the rover bottom plane.
+
+   The MSL_DAN frame is co-aligned wit the MSL_ROVER frame.
+
+   \begindata
+
+      FRAME_MSL_DAN                   = -76180
+      FRAME_-76180_NAME               = 'MSL_DAN'
+      FRAME_-76180_CLASS              = 4
+      FRAME_-76180_CLASS_ID           = -76180
+      FRAME_-76180_CENTER             = -76
+      TKFRAME_-76180_SPEC             = 'ANGLES'
+      TKFRAME_-76180_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76180_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76180_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76180_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+SAM and CHEMIN
+-------------------------------------------------
+
+   The SAM and CHEMIN frames -- MSL_SAM, and MSL_CHEMIN -- are fixed
+   with respect to the rover frame, MSL_ROVER, and defined to be
+   co-aligned with it.
+
+   \begindata
+
+      FRAME_MSL_SAM                   = -76182
+      FRAME_-76182_NAME               = 'MSL_SAM'
+      FRAME_-76182_CLASS              = 4
+      FRAME_-76182_CLASS_ID           = -76182
+      FRAME_-76182_CENTER             = -76
+      TKFRAME_-76182_SPEC             = 'ANGLES'
+      TKFRAME_-76182_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76182_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76182_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76182_UNITS            = 'DEGREES'
+
+      FRAME_MSL_CHEMIN                = -76183
+      FRAME_-76183_NAME               = 'MSL_CHEMIN'
+      FRAME_-76183_CLASS              = 4
+      FRAME_-76183_CLASS_ID           = -76183
+      FRAME_-76183_CENTER             = -76
+      TKFRAME_-76183_SPEC             = 'ANGLES'
+      TKFRAME_-76183_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76183_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76183_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76183_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+Remote Sensing Mast (RSM) and RSM-mounted Instrument Frames
+========================================================================
+
+   This section defines frames for the RSM instruments and structures
+   -- RSM joints and head, Mast Cameras (MASTCAM), Navigation Cameras
+   (NAVCAMs), Chemistry & Camera experiment (CHEMCAM), and the
+   booms and boom-mounted sensors of the Rover Environmental Monitoring
+   Station (REMS).
+
+
+RSM
+-------------------------------------------------
+
+   Five frames are defined for the RSM gimbals and head --
+   MSL_RSM_ZERO_AZ, MSL_RSM_AZ, MSL_RSM_ZERO_EL, MSL_RSM_EL, and
+   MSL_RSM_HEAD.
+ 
+   The RSM "zero" AZ frame, MSL_RSM_ZERO_AZ, is defined to establish
+   the AZ gimbal "zero" position with its +Z axis being the AZ rotation
+   axis and its +X axis pointing toward the "zero" AZ hard stop (RSM
+   looking backward). It is defined as a fixed-offset frame relative to
+   the rover frame and is nominally rotated by -181 degrees about Z
+   from it.
+ 
+   The RSM AZ frame, MSL_RSM_AZ, is rotated from the MSL_RSM_ZERO_AZ
+   frame by the AZ angle about Z. It is defined as a CK-based frame.
+ 
+   This diagram shows the two AZ frames in the nominal forward-looking
+   "home" (181 deg AZ, 91 deg EL) position:
+
+      Rover -Z side ("top") view:
+      ---------------------------
+
+                        .-----.       .-----.       .-----.
+                        |     | Yaz   |     |       |     |
+                        |     |^      |             |     |
+                        `--|--'|      `-- Yr        `--|--'
+                           `---|------o- ^ -----o------'
+                           RSM |    Xaz0 | ------.
+                       <-------x-------> |       |--------.
+                    Xaz      ||||        |       |-------.|
+          RA                 |`| <-------x       |       || RTG 
+       |                     | |  Xr         HGA |-------'|
+      -o---------|--------|o-| v          =====-o---------'
+       |                     `  Yaz0 ------------' 
+                           .----------o---------o------.
+                        .--|--.       .--|--.       .--|--.
+                        |     |       |     |       |     |
+                        |     |       |     |       |     |
+                        `-----'       `-----'       `-----'
+
+                                           Zr, Zaz0, Zaz are into the page.
+
+   The RSM "zero" EL frame, MSL_RSM_ZERO_EL, is defined to establish
+   the EL gimbal "zero" position with its +Y axis being the EL rotation
+   axis and its its +X axis pointing toward the "zero" EL hard stop
+   (RSM looking down). It is defined as a fixed-offset frame relative
+   to the RSM AZ frame and is nominally rotated by -91 degrees about Y
+   from it.
+ 
+   The RSM EL frame, MSL_RSM_EL, is rotated from the MSL_RSM_ZERO_EL
+   frame by the EL angle about Y. It is defined as a CK-based frame.
+ 
+   The RSM head frame, MSL_RSM_HEAD, is defined as a fixed-offset frame
+   relative to the MSL_RSM_EL frame by EL. It is defined to be
+   co-aligned with the ROVER frame in the "home" position.
+ 
+   This diagram shows the two EL and the HEAD frames in the nominal
+   forward-looking "home" (181 deg AZ, 91 deg EL) position:
+
+      Rover -Y side view:
+      -------------------
+
+                     Xel,h     _      Zel0
+                       <-------x-------> 
+                              `|'
+                               |              HGA
+                               | Zel,h    .```.         .
+                               v Xel0    |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-------------------'       .- 
+       o---------o--------o| |                   |    .-' 
+                             |.-------o----.     |-.-'
+                           .-`--------------`-.--' 
+                           |             .-----`o------.
+                         .-|-.         .-|-.         .-|-.
+                        |  o  |       |  o  |       |  o  |
+                         `._.'   <-------x.'         `._.'
+                                Xr       |
+                                         |
+                                         |
+                                      Zr v
+   
+                                           Yr, Yel0, Yh are into the page.
+
+   The AZ, EL, and head frames are co-aligned with the rover frame in 
+   the nominal forward-looking "home" (181 deg AZ, 91 deg EL) position.
+
+   The nominal nominal offset angles for the fixed offset frames in the
+   RSM frame chain are:
+
+      TKFRAME_-76201_ANGLES           = ( 0.0, 0.0, 181.0 )
+      TKFRAME_-76201_AXES             = ( 1,   2,     3   )
+
+      TKFRAME_-76203_ANGLES           = ( 0.0, 0.0,  91.0 )
+      TKFRAME_-76203_AXES             = ( 1,   3,     2   )
+
+      TKFRAME_-76205_ANGLES           = ( 0.0, 0.0,   0.0 )
+      TKFRAME_-76205_AXES             = ( 3    1      2   )
+
+   The actual offset angles were derived from the following AZ and EL
+   "home" gimbal positions (in radians) and directions of the AZ and EL
+   axes in the rover frame at "zero" AZ position (from [6]):
+
+      home_az           3.167345
+      home_el           1.588171
+      az_axis_x        -0.001
+      az_axis_y         0
+      az_axis_z         1
+      el_axis_x        -0.022
+      el_axis_y        -1
+      el_axis_z         0
+      el_azimuth        0
+
+   The frame definitions below incorporate the actual offsets.
+
+   \begindata
+
+      FRAME_MSL_RSM_ZERO_AZ           = -76201
+      FRAME_-76201_NAME               = 'MSL_RSM_ZERO_AZ'
+      FRAME_-76201_CLASS              = 4
+      FRAME_-76201_CLASS_ID           = -76201
+      FRAME_-76201_CENTER             = -76
+      TKFRAME_-76201_SPEC             = 'ANGLES'
+      TKFRAME_-76201_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76201_ANGLES           = ( -178.739697,   0.001260,  -0.057282 )
+      TKFRAME_-76201_AXES             = (    3,          1,          2        )
+      TKFRAME_-76201_UNITS            = 'DEGREES'
+
+      FRAME_MSL_RSM_AZ                = -76202
+      FRAME_-76202_NAME               = 'MSL_RSM_AZ'
+      FRAME_-76202_CLASS              = 3
+      FRAME_-76202_CLASS_ID           = -76202
+      FRAME_-76202_CENTER             = -76
+      CK_-76202_SCLK                  = -76
+      CK_-76202_SPK                   = -76
+
+      FRAME_MSL_RSM_ZERO_EL           = -76203
+      FRAME_-76203_NAME               = 'MSL_RSM_ZERO_EL'
+      FRAME_-76203_CLASS              = 4
+      FRAME_-76203_CLASS_ID           = -76203
+      FRAME_-76203_CENTER             = -76
+      TKFRAME_-76203_SPEC             = 'ANGLES'
+      TKFRAME_-76203_RELATIVE         = 'MSL_RSM_AZ'
+      TKFRAME_-76203_ANGLES           = (   -0.000000,  -0.001260,  90.995495 )
+      TKFRAME_-76203_AXES             = (    3,          1,          2        )
+      TKFRAME_-76203_UNITS            = 'DEGREES'
+
+      FRAME_MSL_RSM_EL                = -76204
+      FRAME_-76204_NAME               = 'MSL_RSM_EL'
+      FRAME_-76204_CLASS              = 3
+      FRAME_-76204_CLASS_ID           = -76204
+      FRAME_-76204_CENTER             = -76
+      CK_-76204_SCLK                  = -76
+      CK_-76204_SPK                   = -76
+
+      FRAME_MSL_RSM_HEAD              = -76205
+      FRAME_-76205_NAME               = 'MSL_RSM_HEAD'
+      FRAME_-76205_CLASS              = 4
+      FRAME_-76205_CLASS_ID           = -76205
+      FRAME_-76205_CENTER             = -76
+      TKFRAME_-76205_SPEC             = 'ANGLES'
+      TKFRAME_-76205_RELATIVE         = 'MSL_RSM_EL'
+      TKFRAME_-76205_ANGLES           = (    0.215198,   0.001260,  -0.057291 )
+      TKFRAME_-76205_AXES             = (    3,          1,          2        )
+      TKFRAME_-76205_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+MASTCAM
+-------------------------------------------------
+
+   The MASTCAM frames are defined as follows:
+
+      -- +Z axis is along the camera's central pixel view direction 
+         ("into image");
+
+      -- +Y axis is along the image central column and points from the
+         image center toward the image top row ("up");
+
+      -- +X completes the right hand frame and is along the image central
+         row and points from the image center toward the image left 
+         column ("left");
+
+      -- the origin of the frame is located at the camera focal point.
+
+   The MASTCAM frames for the RSM in nominal forward-looking (181 deg
+   AZ, 91 deg EL) position are shown on this diagram:
+
+      Rover -Y side view:
+      -------------------
+                               ^ Ymc
+                               |
+                               |
+                      Zmc      | 
+                       <-------*
+                      Xh      `|'
+                               |              HGA
+                               |          .```.         .
+                               v Zh      |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-------------------'       .- 
+       o---------o--------o| |                   |    .-' 
+                             |.-------o----.     |-.-'
+                           .-`--------------`-.--' 
+                           |             .-----`o------.
+                         .-|-.         .-|-.         .-|-.
+                        |  o  |       |  o  |       |  o  |
+                         `._.'   <-------x.'         `._.'
+                                Xr       |
+                                         |
+                                         |
+                                      Zr v
+   
+                                             Yr, Yh are into the page.
+                                             Xmc is out of the page.
+
+   Since MASTCAMs are rigidly mounted on RSM, their frames are defined
+   as fixed offset frames with orientation given with respect to the
+   RSM head frame.
+ 
+   The nominal MASTCAM frame orientation are such that the MASTCAM left
+   and right boresights are "toe"ed in by 1.25 degrees toward the RSM
+   head +X axis. In order to align the RSM head frame with the camera
+   frames in this nominal orientation, it has to be rotated by +90
+   degrees about Y and then by "toe"-in angles (-1.25 degrees for the
+   left camera and +1.25 degrees for the right camera) about X, and
+   finally by -90 degrees about Z (to line up Y axis with the vertical
+   direction.) The following sets of keywords can be incorporated into
+   the frame definitions to provide this nominal orientation:
+
+      TKFRAME_-76210_ANGLES           = ( -90.000,   1.250,  90.000 )
+      TKFRAME_-76210_AXES             = (   2,       1,       3     )
+
+      TKFRAME_-76220_ANGLES           = ( -90.000,  -1.250,  90.000 )
+      TKFRAME_-76220_AXES             = (   2,       1,       3     )
+
+   The actual MSL_MASTCAM_LEFT frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_003_SN_3003_FILTER_0_FOCUS_02315-MCAML-FLIGHT.cahvor'.
+   According to this model the reference frame, MSL_RSM_HEAD, can be
+   transformed into the camera frame, MSL_MASTCAM_LEFT, by the
+   following sequence of rotations: first by 90.00997282 degrees about
+   Y, then by -1.48435653 degrees about X, and finally by -89.65469934
+   degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_MASTCAM_LEFT           = -76210
+      FRAME_-76210_NAME               = 'MSL_MASTCAM_LEFT'
+      FRAME_-76210_CLASS              = 4
+      FRAME_-76210_CLASS_ID           = -76210
+      FRAME_-76210_CENTER             = -76
+      TKFRAME_-76210_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76210_SPEC             = 'ANGLES'
+      TKFRAME_-76210_UNITS            = 'DEGREES'
+      TKFRAME_-76210_AXES             = (    2,        1,        3     )
+      TKFRAME_-76210_ANGLES           = (  -90.010,    1.484,   89.655 )
+
+   \begintext
+
+
+   The actual MSL_MASTCAM_RIGHT frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_003_SN_3004_FILTER_0_FOCUS_02702-MCAMR-FLIGHT.cahvor'.
+   According to this model the reference frame, MSL_RSM_HEAD, can be
+   transformed into the camera frame, MSL_MASTCAM_RIGHT, by the
+   following sequence of rotations: first by 89.99071558 degrees about
+   Y, then by 1.33167368 degrees about X, and finally by -90.43555383
+   degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_MASTCAM_RIGHT          = -76220
+      FRAME_-76220_NAME               = 'MSL_MASTCAM_RIGHT'
+      FRAME_-76220_CLASS              = 4
+      FRAME_-76220_CLASS_ID           = -76220
+      FRAME_-76220_CENTER             = -76
+      TKFRAME_-76220_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76220_SPEC             = 'ANGLES'
+      TKFRAME_-76220_UNITS            = 'DEGREES'
+      TKFRAME_-76220_AXES             = (    2,        1,        3     )
+      TKFRAME_-76220_ANGLES           = (  -89.991,   -1.332,   90.436 )
+
+   \begintext
+
+
+
+NAVCAMs
+-------------------------------------------------
+
+   The NAVCAM frames are defined as follows:
+
+      -- +Z axis is along the camera's central pixel view direction 
+         ("into image");
+
+      -- +Y axis is along the image central column and points from the
+         image center toward the image top row ("up");
+
+      -- +X completes the right hand frame and is along the image central
+         row and points from the image center toward the image left 
+         column ("left");
+
+      -- the origin of the frame is located at the camera focal point.
+
+   The NAVCAM frames for the RSM in nominal forward-looking (181 deg
+   AZ, 91 deg EL) position are shown on this diagram:
+
+      Rover -Y side view:
+      -------------------
+                               ^ Ync
+                               |
+                               |
+                      Znc      | 
+                       <-------*
+                      Xh      `|'
+                               |              HGA
+                               |          .```.         .
+                               v Zh      |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-------------------'       .- 
+       o---------o--------o| |                   |    .-' 
+                             |.-------o----.     |-.-'
+                           .-`--------------`-.--' 
+                           |             .-----`o------.
+                         .-|-.         .-|-.         .-|-.
+                        |  o  |       |  o  |       |  o  |
+                         `._.'   <-------x.'         `._.'
+                                Xr       |
+                                         |
+                                         |
+                                      Zr v
+   
+                                             Yr, Yh are into the page.
+                                             Xnc is out of the page.
+
+   Since NAVCAMs are rigidly mounted on RSM, their frames are defined
+   as fixed offset frames with orientation given with respect to the
+   RSM head frame.
+ 
+   The nominal NAVCAM frame orientation are such that the NAVCAM left
+   and right boresights are co-aligned with the RSM head +X axis. In
+   order to align the RSM head frame with the camera frames in this
+   nominal orientation, it has to be rotated by +90 degrees about Y,
+   then by -90 degrees about Z (to line up Y axis with the vertical
+   direction.) The following sets of keywords can be incorporated into
+   the frame definitions to provide this nominal orientation:
+
+      TKFRAME_-76231_ANGLES           = ( -90.000,   0.000,  90.000 )
+      TKFRAME_-76231_AXES             = (   2,       1,       3     )
+
+      TKFRAME_-76232_ANGLES           = ( -90.000,   0.000,  90.000 )
+      TKFRAME_-76232_AXES             = (   2,       1,       3     )
+
+      TKFRAME_-76233_ANGLES           = ( -90.000,   0.000,  90.000 )
+      TKFRAME_-76233_AXES             = (   2,       1,       3     )
+
+      TKFRAME_-76234_ANGLES           = ( -90.000,   0.000,  90.000 )
+      TKFRAME_-76234_AXES             = (   2,       1,       3     )
+
+   The actual MSL_NAVCAM_LEFT_A frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_004_SN_0216-NAVL-FLIGHT-RCE-A.cahvor'. According to this
+   model the reference frame, MSL_RSM_HEAD, can be transformed into the
+   camera frame, MSL_NAVCAM_LEFT_A, by the following sequence of
+   rotations: first by 89.51443329 degrees about Y, then by -1.12581998
+   degrees about X, and finally by -90.38864561 degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_NAVCAM_LEFT_A          = -76231
+      FRAME_-76231_NAME               = 'MSL_NAVCAM_LEFT_A'
+      FRAME_-76231_CLASS              = 4
+      FRAME_-76231_CLASS_ID           = -76231
+      FRAME_-76231_CENTER             = -76
+      TKFRAME_-76231_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76231_SPEC             = 'ANGLES'
+      TKFRAME_-76231_UNITS            = 'DEGREES'
+      TKFRAME_-76231_AXES             = (    2,        1,        3     )
+      TKFRAME_-76231_ANGLES           = (  -89.514,    1.126,   90.389 )
+
+   \begintext
+
+
+   The actual MSL_NAVCAM_LEFT_B frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_005_SN_0215-NAVL-FLIGHT-RCE-B.cahvor'. According to this
+   model the reference frame, MSL_RSM_HEAD, can be transformed into the
+   camera frame, MSL_NAVCAM_LEFT_B, by the following sequence of
+   rotations: first by 89.86145547 degrees about Y, then by -0.38921323
+   degrees about X, and finally by -90.02355994 degrees about Z.
+
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_NAVCAM_LEFT_B          = -76233
+      FRAME_-76233_NAME               = 'MSL_NAVCAM_LEFT_B'
+      FRAME_-76233_CLASS              = 4
+      FRAME_-76233_CLASS_ID           = -76233
+      FRAME_-76233_CENTER             = -76
+      TKFRAME_-76233_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76233_SPEC             = 'ANGLES'
+      TKFRAME_-76233_UNITS            = 'DEGREES'
+      TKFRAME_-76233_AXES             = (    2,        1,        3     )
+      TKFRAME_-76233_ANGLES           = (  -89.861,    0.389,   90.024 )
+
+   \begintext
+
+
+   The actual MSL_NAVCAM_RIGHT_A frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_004_SN_0206-NAVR-FLIGHT-RCE-A.cahvor'. According to
+   this model the reference frame, MSL_RSM_HEAD, can be transformed
+   into the camera frame, MSL_NAVCAM_RIGHT_A, by the following sequence
+   of rotations: first by 89.24730809 degrees about Y, then by
+   -0.53383267 degrees about X, and finally by -89.81089093 degrees
+   about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+ 
+   \begindata
+
+      FRAME_MSL_NAVCAM_RIGHT_A         = -76232
+      FRAME_-76232_NAME               = 'MSL_NAVCAM_RIGHT_A'
+      FRAME_-76232_CLASS              = 4
+      FRAME_-76232_CLASS_ID           = -76232
+      FRAME_-76232_CENTER             = -76
+      TKFRAME_-76232_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76232_SPEC             = 'ANGLES'
+      TKFRAME_-76232_UNITS            = 'DEGREES'
+      TKFRAME_-76232_AXES             = (    2,        1,        3     )
+      TKFRAME_-76232_ANGLES           = (  -89.247,    0.534,   89.811 )
+
+   \begintext
+
+
+   The actual MSL_NAVCAM_RIGHT_B frame orientation provided in the
+   frame definition below was computed using the CAHVOR(E) camera model
+   file, 'MSL_CAL_005_SN_0218-NAVR-FLIGHT-RCE-B.cahvor'. According to
+   this model the reference frame, MSL_RSM_HEAD, can be transformed
+   into the camera frame, MSL_NAVCAM_RIGHT_B, by the following sequence
+   of rotations: first by 89.91279432 degrees about Y, then by
+   -0.33489566 degrees about X, and finally by -90.29024820 degrees
+   about Z.
+
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_NAVCAM_RIGHT_B         = -76234
+      FRAME_-76234_NAME               = 'MSL_NAVCAM_RIGHT_B'
+      FRAME_-76234_CLASS              = 4
+      FRAME_-76234_CLASS_ID           = -76234
+      FRAME_-76234_CENTER             = -76
+      TKFRAME_-76234_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76234_SPEC             = 'ANGLES'
+      TKFRAME_-76234_UNITS            = 'DEGREES'
+      TKFRAME_-76234_AXES             = (    2,        1,        3     )
+      TKFRAME_-76234_ANGLES           = (  -89.913,    0.335,   90.290 )
+
+   \begintext
+
+
+CHEMCAM
+-------------------------------------------------
+
+   The CHEMCAM RMI frame is defined as follows:
+
+      -- +Z axis is along the camera's central pixel view direction 
+         ("into image");
+
+      -- +Y axis is along the image central column and points from the
+         image center toward the image top row ("up");
+
+      -- +X completes the right hand frame and is along the image central
+         row and points from the image center toward the image left 
+         column ("left");
+
+      -- the origin of the frame is located at the camera focal point.
+
+   The CHEMCAM LIBS laser and camera frames are defined to be nominally
+   co-aligned with the CHEMCAM RMI frame.
+
+   The CHEMCAM frames for the RSM in nominal forward-looking (181 deg
+   AZ, 91 deg EL) position are shown on this diagram:
+
+      Rover -Y side view:
+      -------------------
+                               ^ Ycc
+                               |
+                               |
+                      Zcc      | 
+                       <-------*
+                      Xh      `|'
+                               |              HGA
+                               |          .```.         .
+                               v Zh      |  o  ---   .-' \ RTG
+          RA                   |          `._.' | .-'     \
+      -|-                  |-.-------------------'       .- 
+       o---------o--------o| |                   |    .-' 
+                             |.-------o----.     |-.-'
+                           .-`--------------`-.--' 
+                           |             .-----`o------.
+                         .-|-.         .-|-.         .-|-.
+                        |  o  |       |  o  |       |  o  |
+                         `._.'   <-------x.'         `._.'
+                                Xr       |
+                                         |
+                                         |
+                                      Zr v
+   
+                                             Yr, Yh are into the page.
+                                             Xcc is out of the page.
+
+   Since CHEMCAM is rigidly mounted on RSM, its frames are defined as
+   fixed offset frames with orientation given with respect to the RSM
+   head frame.
+
+   The nominal CHEMCAM RMI orientation is such that the CHEMCAM RMI
+   boresight is co-aligned with the RSM head +X axis. In order to align
+   the RSM head frame with the RMI frame in this nominal orientation,
+   it has to be rotated by +90 degrees about Y, then by -90 degrees
+   about Z (to line up Y axis with the vertical direction.) The
+   following sets of keywords should be included into the frame
+   definitions to provide this nominal orientation:
+
+      TKFRAME_-76243_ANGLES           = ( -90.000,   0.000,  90.000 )
+      TKFRAME_-76243_AXES             = (   2,       1,       3     )
+
+   The actual MSL_CHEMCAM_RMI frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_003_SN_0001_FOCUS_12658-RMI-FLIGHT.cahv'. According to this
+   model the reference frame, MSL_RSM_HEAD, can be transformed into the
+   camera frame, MSL_CHEMCAM_RMI, by the following sequence of
+   rotations: first by 89.81378695 degrees about Y, then by -0.21898509
+   degrees about X, and finally by -90.08397425 degrees about Z.
+
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define
+   rotations from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_CHEMCAM_RMI            = -76243
+      FRAME_-76243_NAME               = 'MSL_CHEMCAM_RMI'
+      FRAME_-76243_CLASS              = 4
+      FRAME_-76243_CLASS_ID           = -76243
+      FRAME_-76243_CENTER             = -76
+      TKFRAME_-76243_RELATIVE         = 'MSL_RSM_HEAD'
+      TKFRAME_-76243_SPEC             = 'ANGLES'
+      TKFRAME_-76243_UNITS            = 'DEGREES'
+      TKFRAME_-76243_AXES             = (    2,        1,        3     )
+      TKFRAME_-76243_ANGLES           = (  -89.814,    0.219,   90.084 )
+
+   \begintext
+
+   Based on the pre-launch calibrations the LIBS laser spot points along 
+   the RMI pixel (496,531) view direction as shown on this diagram:
+
+                                    ^ Yrmi
+                    (0,0            |           (0,1023)
+                      o-------------|-------------o
+                      |             |             |
+                      |             |             |
+                      |             |             |
+                      |             |             |
+                      |             | (496,531)   |
+                      |             | x           |
+                   <----------------x             |
+             Zrmi     |       (511.5,511.5)       |
+                      |                           |
+                      |                           |
+                      |                           |
+                      |                           |
+                      |                           |
+                      o---------------------------o
+                 (1023,0)                    (1023,1023)
+
+                                       Zrmi and Zlibs are into the page.
+
+
+   Assuming the nominal RMI pixel IFOV of 20 microradians, two
+   rotations needed to coalign the RMI frame with the LIBS laser frame
+   are first by -0.00039 radians about Y, then by -0.00031 radians
+   about X. This orientation is provided in the LIBS laser frame
+   definition below, containing the opposite of this transformation
+   because Euler angles specified in it define rotations from the
+   "destination" frame to the "reference" frame.
+   
+   The CHEMCAM LIBS camera frame is defined to be co-aligned with the
+   LIBS laser frame.
+
+   \begindata
+
+      FRAME_MSL_CHEMCAM_LIBS_LASER    = -76241
+      FRAME_-76241_NAME               = 'MSL_CHEMCAM_LIBS_LASER'
+      FRAME_-76241_CLASS              = 4
+      FRAME_-76241_CLASS_ID           = -76241
+      FRAME_-76241_CENTER             = -76
+      TKFRAME_-76241_SPEC             = 'ANGLES'
+      TKFRAME_-76241_RELATIVE         = 'MSL_CHEMCAM_RMI'
+      TKFRAME_-76241_ANGLES           = ( 0.00039, 0.00031,   0.000 )
+      TKFRAME_-76241_AXES             = ( 2,       1,         3     )
+      TKFRAME_-76241_UNITS            = 'RADIANS'
+
+      FRAME_MSL_CHEMCAM_LIBS_CAM      = -76242
+      FRAME_-76242_NAME               = 'MSL_CHEMCAM_LIBS_CAM'
+      FRAME_-76242_CLASS              = 4
+      FRAME_-76242_CLASS_ID           = -76242
+      FRAME_-76242_CENTER             = -76
+      TKFRAME_-76242_SPEC             = 'ANGLES'
+      TKFRAME_-76242_RELATIVE         = 'MSL_CHEMCAM_LIBS_LASER'
+      TKFRAME_-76242_ANGLES           = (   0.000,   0.000,   0.000 )
+      TKFRAME_-76242_AXES             = (   2,       1,       3     )
+      TKFRAME_-76242_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+REMS
+-------------------------------------------------
+
+   REMS boom frames -- MSL_REMS_BOOM1 and MSL_REMS_BOOM1 -- are defined 
+   to have X axes along booms and Z axes nominally co-aligned with
+   the rover Z axis.
+
+   The REMS BOOM 1 frame is nominally rotated from the rover frame by
+   122 degrees about Z while the REMS BOOM 2 frame is nominally rotated
+   from the rover frame by 2 degrees about Z.
+
+   This diagram illustrates the REMS boom frames:
+
+      Rover -Z side ("top") view:
+      ---------------------------
+
+                        .-----.  Xb2  .-----.       .-----.
+                        | Yb1       ^ |     |       |     |
+                        |    ^     /  |             |     |
+                        `--  |    /   `-- Yr        `--|--'
+                             | --/----o- ^ -----o------'
+                             |.-x------- | ------.
+                     <-------x| |`-. Yb2 |       |--------.
+                  Xb1        || |   `>   |       |-------.|
+          RA             RSM |`- <-------x       |       || RTG 
+       |                     |  Xr           HGA |-------'|
+      -o---------|--------|o-|            =====-o---------'
+       |                     `-------------------' 
+                           .----------o---------o------.
+                        .--|--.       .--|--.       .--|--.
+                        |     |       |     |       |     |
+                        |     |       |     |       |     |
+                        `-----'       `-----'       `-----'
+
+                                          Zr, Zb1, Zb2 is into the page.
+
+   REMS sensor frames are defined to be co aligned with the their
+   corresponding boom frames.
+
+   \begindata
+
+      FRAME_MSL_REMS_BOOM1            = -76250
+      FRAME_-76250_NAME               = 'MSL_REMS_BOOM1'
+      FRAME_-76250_CLASS              = 4
+      FRAME_-76250_CLASS_ID           = -76250
+      FRAME_-76250_CENTER             = -76
+      TKFRAME_-76250_SPEC             = 'ANGLES'
+      TKFRAME_-76250_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76250_ANGLES           = ( 0.0, 0.0, -122.0 )
+      TKFRAME_-76250_AXES             = ( 1,   2,      3   )
+      TKFRAME_-76250_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM1_WS1        = -76251
+      FRAME_-76251_NAME               = 'MSL_REMS_BOOM1_WS1'
+      FRAME_-76251_CLASS              = 4
+      FRAME_-76251_CLASS_ID           = -76251
+      FRAME_-76251_CENTER             = -76
+      TKFRAME_-76251_SPEC             = 'ANGLES'
+      TKFRAME_-76251_RELATIVE         = 'MSL_REMS_BOOM1'
+      TKFRAME_-76251_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76251_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76251_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM1_WS2        = -76252
+      FRAME_-76252_NAME               = 'MSL_REMS_BOOM1_WS2'
+      FRAME_-76252_CLASS              = 4
+      FRAME_-76252_CLASS_ID           = -76252
+      FRAME_-76252_CENTER             = -76
+      TKFRAME_-76252_SPEC             = 'ANGLES'
+      TKFRAME_-76252_RELATIVE         = 'MSL_REMS_BOOM1'
+      TKFRAME_-76252_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76252_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76252_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM1_WS3        = -76253
+      FRAME_-76253_NAME               = 'MSL_REMS_BOOM1_WS3'
+      FRAME_-76253_CLASS              = 4
+      FRAME_-76253_CLASS_ID           = -76253
+      FRAME_-76253_CENTER             = -76
+      TKFRAME_-76253_SPEC             = 'ANGLES'
+      TKFRAME_-76253_RELATIVE         = 'MSL_REMS_BOOM1'
+      TKFRAME_-76253_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76253_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76253_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM1_ATS        = -76254
+      FRAME_-76254_NAME               = 'MSL_REMS_BOOM1_ATS'
+      FRAME_-76254_CLASS              = 4
+      FRAME_-76254_CLASS_ID           = -76254
+      FRAME_-76254_CENTER             = -76
+      TKFRAME_-76254_SPEC             = 'ANGLES'
+      TKFRAME_-76254_RELATIVE         = 'MSL_REMS_BOOM1'
+      TKFRAME_-76254_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76254_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76254_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM1_GTS        = -76255
+      FRAME_-76255_NAME               = 'MSL_REMS_BOOM1_GTS'
+      FRAME_-76255_CLASS              = 4
+      FRAME_-76255_CLASS_ID           = -76255
+      FRAME_-76255_CENTER             = -76
+      TKFRAME_-76255_SPEC             = 'ANGLES'
+      TKFRAME_-76255_RELATIVE         = 'MSL_REMS_BOOM1'
+      TKFRAME_-76255_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76255_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76255_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM2            = -76260
+      FRAME_-76260_NAME               = 'MSL_REMS_BOOM2'
+      FRAME_-76260_CLASS              = 4
+      FRAME_-76260_CLASS_ID           = -76260
+      FRAME_-76260_CENTER             = -76
+      TKFRAME_-76260_SPEC             = 'ANGLES'
+      TKFRAME_-76260_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76260_ANGLES           = ( 0.0, 0.0, -2.0 )
+      TKFRAME_-76260_AXES             = ( 1,   2,    3   )
+      TKFRAME_-76260_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM2_WS1        = -76261
+      FRAME_-76261_NAME               = 'MSL_REMS_BOOM2_WS1'
+      FRAME_-76261_CLASS              = 4
+      FRAME_-76261_CLASS_ID           = -76261
+      FRAME_-76261_CENTER             = -76
+      TKFRAME_-76261_SPEC             = 'ANGLES'
+      TKFRAME_-76261_RELATIVE         = 'MSL_REMS_BOOM2'
+      TKFRAME_-76261_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76261_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76261_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM2_WS2        = -76262
+      FRAME_-76262_NAME               = 'MSL_REMS_BOOM2_WS2'
+      FRAME_-76262_CLASS              = 4
+      FRAME_-76262_CLASS_ID           = -76262
+      FRAME_-76262_CENTER             = -76
+      TKFRAME_-76262_SPEC             = 'ANGLES'
+      TKFRAME_-76262_RELATIVE         = 'MSL_REMS_BOOM2'
+      TKFRAME_-76262_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76262_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76262_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM2_WS3        = -76263
+      FRAME_-76263_NAME               = 'MSL_REMS_BOOM2_WS3'
+      FRAME_-76263_CLASS              = 4
+      FRAME_-76263_CLASS_ID           = -76263
+      FRAME_-76263_CENTER             = -76
+      TKFRAME_-76263_SPEC             = 'ANGLES'
+      TKFRAME_-76263_RELATIVE         = 'MSL_REMS_BOOM2'
+      TKFRAME_-76263_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76263_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76263_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM2_ATS        = -76264
+      FRAME_-76264_NAME               = 'MSL_REMS_BOOM2_ATS'
+      FRAME_-76264_CLASS              = 4
+      FRAME_-76264_CLASS_ID           = -76264
+      FRAME_-76264_CENTER             = -76
+      TKFRAME_-76264_SPEC             = 'ANGLES'
+      TKFRAME_-76264_RELATIVE         = 'MSL_REMS_BOOM2'
+      TKFRAME_-76264_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76264_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76264_UNITS            = 'DEGREES'
+
+      FRAME_MSL_REMS_BOOM2_HS         = -76265
+      FRAME_-76265_NAME               = 'MSL_REMS_BOOM2_HS'
+      FRAME_-76265_CLASS              = 4
+      FRAME_-76265_CLASS_ID           = -76265
+      FRAME_-76265_CENTER             = -76
+      TKFRAME_-76265_SPEC             = 'ANGLES'
+      TKFRAME_-76265_RELATIVE         = 'MSL_REMS_BOOM2'
+      TKFRAME_-76265_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76265_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76265_UNITS            = 'DEGREES'
+
+   \begintext
+
+
+Robot Arm (RA) and RA-mounted Instrument Frames
+========================================================================
+
+   This section defines frames for the RA instruments and structures --
+   RA joints and turret head, Mars Hand Lens Imager (MAHLI), Alpha
+   Particle X-ray Spectrometer (APXS), Powder Acquisition Drill System
+   (PADS), Dust Removal Tool (DRT), and Collection and Handling for
+   Interior Martian Rock Analysis (CHIMRA).
+
+
+RA Joints
+-------------------------------------------------
+
+   MSL RA base frame, MSL_RA_BASE, is defined to be coincident in
+   orientation with the rover frame. As this frame is fixed with
+   respect to the rover it's defined as zero offset frame with respect
+   to the rover frame.
+ 
+   All MSL RA joint frames -- SHOULDER_AZ, SHOULDER_EL, ELBOW, WRIST,
+   and TURRET -- are defined in accordance with normal kinematics
+   convention as follows:
+
+      -- +Z axis is along the joint rotation axis, nominally pointing
+         along rover +Z for SHOULDER_AZ, along rover -Y (for RA in 
+         straight out position) for SHOULDER_EL, ELBOW, and WRIST, and
+         along wrist +Y for TURRET;
+
+      -- +X axis is along the link attached to the joint;
+
+      -- +Y completes the right hand frame;
+
+      -- the origin lies on the rotation axis at a point that provides for 
+         the minimum magnitude of translations between the joints
+         (see diagram above).
+
+   This diagram illustrates RA base and joint frames in "zero joint
+   rotation" position:
+
+
+      RA side view:
+      -------------
+
+              Shoulder/Az                                Turret
+                 axis                                     axis
+
+                   |                                    |
+                   .                                    .
+                   |                                    |
+
+                                                                     
+              //////// Xbase                          .___.          
+             //o------>                               | o |          
+             //|//////                                | o------>     
+              /|///////                               ._|_.    Xtr   
+               | |   | .-.Xsh_az         .-.            |\   .       
+         Ybase V | o----x->----> =======| x------> =====|=| x------> 
+                 ._|_. `|   Xsh_el       `|'    Xelb    V  `|'     Xwr
+                   |    |                 |            Ztr  |       
+                   |    |                 |                 |
+         o------>  V    V Ysh_el          V Yelb            V Ywr
+         |     Xr   Zsh_az
+         |
+         |
+         V                          Yr, Ybase, Ysh_az, Ytr are out of page;
+          Zr                             Zsh_el, Zelb, Zwr are into page.
+
+
+      RA top view:
+      ------------
+
+                    Shoulder/El         Elbow             Wrist
+                       axis             axis              axis
+
+                        |                 |                 |
+                        .                 .                 .
+                        |                 |                 |
+                        
+               //////    Zsh_el            Zelb              Zwr
+             /Rover//   ^                 ^                 ^
+             ////////  .|.               .|.                |
+             ////Xbase |||               |||                |       
+             //x----->| |    Xsh_el     | | |  Xelb       ._|_.  Xwr
+             //| | x----x->---->        | x------> -------| x------>
+             //|//`|'|__ Xsh_az        |__|__|------------|   |     
+             //|///|/  \   `-----------'   /              '---'     
+             //V///|/   `-----------------'       APXS .-'. /  Xtr  
+            Ybase//V/ Ysh_az                          | x------>    
+                /////                            MAHLI `|'          
+                                                        |           
+                                                        |
+         x------> Xr                                    V Ytr
+         |
+         |
+         |                                    Zr, Zbase, Zsh_az, Ysh_el, 
+         V Yr                                 Yelb, Ywr, and Ztr are all
+                                                      into the page
+                                
+
+   During normal surface operations the orientation of each of these
+   frames with respect to each other varies and is controlled and
+   telemetered using RA joint angles. Therefore, these frame are
+   defined as a CK frames with the orientation for each frame provided
+   with respect to its parent in the frame chain.
+
+   \begindata
+
+      FRAME_MSL_RA_BASE               = -76300
+      FRAME_-76300_NAME               = 'MSL_RA_BASE'
+      FRAME_-76300_CLASS              = 4
+      FRAME_-76300_CLASS_ID           = -76300
+      FRAME_-76300_CENTER             = -76
+      TKFRAME_-76300_SPEC             = 'ANGLES'
+      TKFRAME_-76300_RELATIVE         = 'MSL_ROVER'
+      TKFRAME_-76300_ANGLES           = ( 0.0, 0.0, 0.0 )
+      TKFRAME_-76300_AXES             = ( 1,   2,   3   )
+      TKFRAME_-76300_UNITS            = 'DEGREES'
+
+      FRAME_MSL_RA_SHOULDER_AZ        = -76301
+      FRAME_-76301_NAME               = 'MSL_RA_SHOULDER_AZ'
+      FRAME_-76301_CLASS              = 3
+      FRAME_-76301_CLASS_ID           = -76301
+      FRAME_-76301_CENTER             = -76
+      CK_-76301_SCLK                  = -76
+      CK_-76301_SPK                   = -76
+
+      FRAME_MSL_RA_SHOULDER_EL        = -76302
+      FRAME_-76302_NAME               = 'MSL_RA_SHOULDER_EL'
+      FRAME_-76302_CLASS              = 3
+      FRAME_-76302_CLASS_ID           = -76302
+      FRAME_-76302_CENTER             = -76
+      CK_-76302_SCLK                  = -76
+      CK_-76302_SPK                   = -76
+
+      FRAME_MSL_RA_ELBOW              = -76303
+      FRAME_-76303_NAME               = 'MSL_RA_ELBOW'
+      FRAME_-76303_CLASS              = 3
+      FRAME_-76303_CLASS_ID           = -76303
+      FRAME_-76303_CENTER             = -76
+      CK_-76303_SCLK                  = -76
+      CK_-76303_SPK                   = -76
+
+      FRAME_MSL_RA_WRIST              = -76304
+      FRAME_-76304_NAME               = 'MSL_RA_WRIST'
+      FRAME_-76304_CLASS              = 3
+      FRAME_-76304_CLASS_ID           = -76304
+      FRAME_-76304_CENTER             = -76
+      CK_-76304_SCLK                  = -76
+      CK_-76304_SPK                   = -76
+
+      FRAME_MSL_RA_TURRET             = -76305
+      FRAME_-76305_NAME               = 'MSL_RA_TURRET'
+      FRAME_-76305_CLASS              = 3
+      FRAME_-76305_CLASS_ID           = -76305
+      FRAME_-76305_CENTER             = -76
+      CK_-76305_SCLK                  = -76
+      CK_-76305_SPK                   = -76
+
+   \begintext
+
+
+RA Instruments
+-------------------------------------------------
+
+   Two frames are defined for each of the MSL RA instruments -- MAHLI,
+   APXS, PADS, DRT, and CHIMRA.
+ 
+   The first frame for each instrument, named ``MSL_<INST>_REF'', is
+   the reference frame consistent with the FSW frame for which
+   orientation is provided in the RA telemetry. The X axis of this
+   frame is along the instrument's principal direction (boresight,
+   central axis, etc) and the Z axis is nominally co-aligned with the Z
+   axis of the TURRET frame.
+ 
+   Although the ``_REF'' frames are rotated from the TURRET frame about
+   Z axis by the following fixed angles:
+ 
+      Instrument     Angle, deg [4]     Angle, rad (deg           ) [5]
+      -------------  --------------     --------------------------------
+      MAHLI_REF       125.00             2.1380283 ( 122.50       )
+      APXS_REF       -133.00             3.9618974 (-133.00       )
+      PADS_REF          0.00             0.0       (   0.00       )
+      DRT_REF         +69.67             1.22612   ( +70.25150118 )
+      CHIMRA_REF      -60.00 (TBD)       5.20867   ( -61.56519212 )
+
+   They are defined as CK-based frames to allow storing their
+   orientation either relative to the TURRET frame (based on the angles
+   above) or relative to the ROVER frame (based on the orientation
+   quaternions provided in telemetry).
+ 
+   The second frame for each instrument, named ``MSL_<INST>'', is the
+   reference frame that has the Z axis along the instrument's principal
+   direction (boresight, central axis, etc) and Y axis nominally
+   co-aligned with the Y axis of the ``_REF'' frame.
+ 
+   These frames are defined as fixed-offset frames relative to the
+   corresponding ``_REF'' frames and are nominally rotated from them by
+   +90 degrees about Y.
+
+   This diagram illustrates RA turret head and instrument frames (looking 
+   in the direction of Ztr axis):
+                                                   
+                  Zapxs        Yapxs              ^ Zchimra
+                  Xapxs_ref    Yapxs_ref         /  Xchimra_ref
+                       ^.     ^                 /
+                         `. .'                /*.
+                           * `.    .-------. / / `-> 
+                          `.   `.  |        `./     Ychimra
+                            `.   `.---.       `.    Ychimra_ref
+                        .------..'     `.      |====
+                        |      /         \----.        
+                        |      |    x------>  |--*----> 
+                        |      \    |    Xtr  '  |     Zpads
+                        `------ `.  |  . \     |=|==   Xpads_ref
+                               /  `-|-'   \----' v
+               Ymahli         /   / V  \   \      Ypads
+               Ymahli_ref <-./   / Ytr  \   \     Ypads_ref
+                             `*./        \.*'
+                             /         <-'  \
+                            /     Ydrt       \
+                Zmahli     V      Ydrt_ref    V Zdrt
+                Xmahli_ref                      Xdrt_ref
+
+
+                                     Ztr is into the page.
+                                     Z*ref are into the page.
+                                     X* are out of the page
+
+   The RA instrument frames except for MAHLI are defined below. The
+   MAHLI frame definitions with additional comments are provided after
+   the block below.
+
+   \begindata
+
+      FRAME_MSL_APXS_REF              = -76320
+      FRAME_-76320_NAME               = 'MSL_APXS_REF'
+      FRAME_-76320_CLASS              = 3
+      FRAME_-76320_CLASS_ID           = -76320
+      FRAME_-76320_CENTER             = -76
+      CK_-76320_SCLK                  = -76
+      CK_-76320_SPK                   = -76
+
+      FRAME_MSL_APXS                  = -76321
+      FRAME_-76321_NAME               = 'MSL_APXS'
+      FRAME_-76321_CLASS              = 4
+      FRAME_-76321_CLASS_ID           = -76321
+      FRAME_-76321_CENTER             = -76
+      TKFRAME_-76321_SPEC             = 'ANGLES'
+      TKFRAME_-76321_RELATIVE         = 'MSL_APXS_REF'
+      TKFRAME_-76321_ANGLES           = ( -90.0, 0.0, 0.0 )
+      TKFRAME_-76321_AXES             = (   2,   1,   3   )
+      TKFRAME_-76321_UNITS            = 'DEGREES'
+
+      FRAME_MSL_PADS_REF              = -76330
+      FRAME_-76330_NAME               = 'MSL_PADS_REF'
+      FRAME_-76330_CLASS              = 3
+      FRAME_-76330_CLASS_ID           = -76330
+      FRAME_-76330_CENTER             = -76
+      CK_-76330_SCLK                  = -76
+      CK_-76330_SPK                   = -76
+
+      FRAME_MSL_PADS                  = -76331
+      FRAME_-76331_NAME               = 'MSL_PADS'
+      FRAME_-76331_CLASS              = 4
+      FRAME_-76331_CLASS_ID           = -76331
+      FRAME_-76331_CENTER             = -76
+      TKFRAME_-76331_SPEC             = 'ANGLES'
+      TKFRAME_-76331_RELATIVE         = 'MSL_PADS_REF'
+      TKFRAME_-76331_ANGLES           = ( -90.0, 0.0, 0.0 )
+      TKFRAME_-76331_AXES             = (   2,   1,   3   )
+      TKFRAME_-76331_UNITS            = 'DEGREES'
+
+      FRAME_MSL_DRT_REF               = -76340
+      FRAME_-76340_NAME               = 'MSL_DRT_REF'
+      FRAME_-76340_CLASS              = 3
+      FRAME_-76340_CLASS_ID           = -76340
+      FRAME_-76340_CENTER             = -76
+      CK_-76340_SCLK                  = -76
+      CK_-76340_SPK                   = -76
+
+      FRAME_MSL_DRT                   = -76341
+      FRAME_-76341_NAME               = 'MSL_DRT'
+      FRAME_-76341_CLASS              = 4
+      FRAME_-76341_CLASS_ID           = -76341
+      FRAME_-76341_CENTER             = -76
+      TKFRAME_-76341_SPEC             = 'ANGLES'
+      TKFRAME_-76341_RELATIVE         = 'MSL_DRT_REF'
+      TKFRAME_-76341_ANGLES           = ( -90.0, 0.0, 0.0 )
+      TKFRAME_-76341_AXES             = (   2,   1,   3   )
+      TKFRAME_-76341_UNITS            = 'DEGREES'
+
+      FRAME_MSL_CHIMRA_REF            = -76350
+      FRAME_-76350_NAME               = 'MSL_CHIMRA_REF'
+      FRAME_-76350_CLASS              = 3
+      FRAME_-76350_CLASS_ID           = -76350
+      FRAME_-76350_CENTER             = -76
+      CK_-76350_SCLK                  = -76
+      CK_-76350_SPK                   = -76
+
+      FRAME_MSL_CHIMRA                = -76351
+      FRAME_-76351_NAME               = 'MSL_CHIMRA'
+      FRAME_-76351_CLASS              = 4
+      FRAME_-76351_CLASS_ID           = -76351
+      FRAME_-76351_CENTER             = -76
+      TKFRAME_-76351_SPEC             = 'ANGLES'
+      TKFRAME_-76351_RELATIVE         = 'MSL_CHIMRA_REF'
+      TKFRAME_-76351_ANGLES           = ( -90.0, 0.0, 0.0 )
+      TKFRAME_-76351_AXES             = (   2,   1,   3   )
+      TKFRAME_-76351_UNITS            = 'DEGREES'
+
+   \begintext
+
+   This is the definition of the MAHLI_REF frame.
+
+   \begindata
+
+      FRAME_MSL_MAHLI_REF             = -76310
+      FRAME_-76310_NAME               = 'MSL_MAHLI_REF'
+      FRAME_-76310_CLASS              = 3
+      FRAME_-76310_CLASS_ID           = -76310
+      FRAME_-76310_CENTER             = -76
+      CK_-76310_SCLK                  = -76
+      CK_-76310_SPK                   = -76
+
+   \begintext
+
+   The actual MSL_MAHLI frame orientation provided in the frame
+   definition below was computed using the CAHVOR(E) camera model file,
+   'MSL_CAL_002_SN_3002_FOCUS_12594-MAHLI-FLIGHT.cahvor'. According to
+   this model the reference frame, MSL_MAHLI_REF, can be transformed
+   into the camera frame, MSL_MAHLI, by the following sequence of
+   rotations: first by 90.53516876 degrees about Y, then by 0.47298218
+   degrees about X, and finally by 0.50359886 degrees about Z.
+ 
+   The frame definition below contains the opposite of this
+   transformation because Euler angles specified in it define rotations
+   from the "destination" frame to the "reference" frame.
+
+   \begindata
+
+      FRAME_MSL_MAHLI                  = -76311
+      FRAME_-76311_NAME               = 'MSL_MAHLI'
+      FRAME_-76311_CLASS              = 4
+      FRAME_-76311_CLASS_ID           = -76311
+      FRAME_-76311_CENTER             = -76
+      TKFRAME_-76311_RELATIVE         = 'MSL_MAHLI_REF'
+      TKFRAME_-76311_SPEC             = 'ANGLES'
+      TKFRAME_-76311_UNITS            = 'DEGREES'
+      TKFRAME_-76311_AXES             = (    2,        1,        3     )
+      TKFRAME_-76311_ANGLES           = (  -90.535,   -0.473,   -0.504 )
+
+   \begintext
+
+
+MSL NAIF ID Codes -- Definition Section
+========================================================================
+
+   This section contains name to NAIF ID mappings for the MSL.
+
+   \begindata
+
+      NAIF_BODY_NAME += ( 'MSL_LANDING_SITE'               )
+      NAIF_BODY_CODE += ( -76900                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL'                            )
+      NAIF_BODY_CODE += ( -76                              )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_ROVER'                      )
+      NAIF_BODY_CODE += ( -76000                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_SPACECRAFT'                 )
+      NAIF_BODY_CODE += ( -76010                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CRUISE_STAGE'               )
+      NAIF_BODY_CODE += ( -76020                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DESCENT_STAGE'              )
+      NAIF_BODY_CODE += ( -76030                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_ROVER_MECH'                 )
+      NAIF_BODY_CODE += ( -76040                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CACS'                       )
+      NAIF_BODY_CODE += ( -76050                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DIMU_A'                     )
+      NAIF_BODY_CODE += ( -76031                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_PLGA'                       )
+      NAIF_BODY_CODE += ( -76060                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_TLGA'                       )
+      NAIF_BODY_CODE += ( -76061                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_PUHF'                       )
+      NAIF_BODY_CODE += ( -76062                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MGA'                        )
+      NAIF_BODY_CODE += ( -76063                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DLGA'                       )
+      NAIF_BODY_CODE += ( -76064                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DUHF'                       )
+      NAIF_BODY_CODE += ( -76065                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T1'              )
+      NAIF_BODY_CODE += ( -76071                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T2'              )
+      NAIF_BODY_CODE += ( -76072                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T3'              )
+      NAIF_BODY_CODE += ( -76073                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T4'              )
+      NAIF_BODY_CODE += ( -76074                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T5'              )
+      NAIF_BODY_CODE += ( -76075                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T6'              )
+      NAIF_BODY_CODE += ( -76076                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MISP_T7'              )
+      NAIF_BODY_CODE += ( -76077                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P1'             )
+      NAIF_BODY_CODE += ( -76081                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P2'             )
+      NAIF_BODY_CODE += ( -76082                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P3'             )
+      NAIF_BODY_CODE += ( -76083                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P4'             )
+      NAIF_BODY_CODE += ( -76084                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P5'             )
+      NAIF_BODY_CODE += ( -76085                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P6'             )
+      NAIF_BODY_CODE += ( -76086                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MEDLI_MEADS_P7'             )
+      NAIF_BODY_CODE += ( -76087                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RLGA'                       )
+      NAIF_BODY_CODE += ( -76110                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RUHF'                       )
+      NAIF_BODY_CODE += ( -76111                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HGA_ZERO_AZ'                )
+      NAIF_BODY_CODE += ( -76121                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HGA_AZ'                     )
+      NAIF_BODY_CODE += ( -76122                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HGA_ZERO_EL'                )
+      NAIF_BODY_CODE += ( -76123                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HGA_EL'                     )
+      NAIF_BODY_CODE += ( -76124                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HGA'                        )
+      NAIF_BODY_CODE += ( -76125                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HGA_EB'                     )
+      NAIF_BODY_CODE += ( -76126                           )
+
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_FRONT_LEFT_A'        )
+      NAIF_BODY_CODE += ( -76131                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_FRONT_RIGHT_A'       )
+      NAIF_BODY_CODE += ( -76132                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_FRONT_LEFT_B'        )
+      NAIF_BODY_CODE += ( -76133                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_FRONT_RIGHT_B'       )
+      NAIF_BODY_CODE += ( -76134                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_BACK_LEFT_A'         )
+      NAIF_BODY_CODE += ( -76141                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_BACK_RIGHT_A'        )
+      NAIF_BODY_CODE += ( -76142                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_BACK_LEFT_B'         )
+      NAIF_BODY_CODE += ( -76143                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_HAZCAM_BACK_RIGHT_B'        )
+      NAIF_BODY_CODE += ( -76144                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RAD'                        )
+      NAIF_BODY_CODE += ( -76150                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MARDI'                      )
+      NAIF_BODY_CODE += ( -76160                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_UVS'                   )
+      NAIF_BODY_CODE += ( -76170                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DAN'                        )
+      NAIF_BODY_CODE += ( -76180                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DAN_PNG'                    )
+      NAIF_BODY_CODE += ( -76191                           )
+
+      NAIF_BODY_NAME += ( 'MSL_DAN_DE'                     )
+      NAIF_BODY_CODE += ( -76192                           )
+
+      NAIF_BODY_NAME += ( 'MSL_DAN_DE_CTN'                 )
+      NAIF_BODY_CODE += ( -76193                           )
+
+      NAIF_BODY_NAME += ( 'MSL_DAN_DE_CETN'                )
+      NAIF_BODY_CODE += ( -76194                           )
+
+      NAIF_BODY_NAME += ( 'MSL_REMS_PS'                    )
+      NAIF_BODY_CODE += ( -76181                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_SAM'                        )
+      NAIF_BODY_CODE += ( -76182                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_SAM_1_INLET'                )
+      NAIF_BODY_CODE += ( -76184                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SAM_2_INLET'                )
+      NAIF_BODY_CODE += ( -76185                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CHEMIN'                     )
+      NAIF_BODY_CODE += ( -76183                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHEMIN_INLET'               )
+      NAIF_BODY_CODE += ( -76186                           )
+
+      NAIF_BODY_NAME += ( 'MSL_RSM_ZERO_AZ'                )
+      NAIF_BODY_CODE += ( -76201                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RSM_AZ'                     )
+      NAIF_BODY_CODE += ( -76202                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RSM_ZERO_EL'                )
+      NAIF_BODY_CODE += ( -76203                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RSM_EL'                     )
+      NAIF_BODY_CODE += ( -76204                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RSM_HEAD'                   )
+      NAIF_BODY_CODE += ( -76205                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT'               )
+      NAIF_BODY_CODE += ( -76210                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F1'            )
+      NAIF_BODY_CODE += ( -76211                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F2'            )
+      NAIF_BODY_CODE += ( -76212                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F3'            )
+      NAIF_BODY_CODE += ( -76213                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F4'            )
+      NAIF_BODY_CODE += ( -76214                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F5'            )
+      NAIF_BODY_CODE += ( -76215                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F6'            )
+      NAIF_BODY_CODE += ( -76216                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F7'            )
+      NAIF_BODY_CODE += ( -76217                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_LEFT_F8'            )
+      NAIF_BODY_CODE += ( -76218                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT'              )
+      NAIF_BODY_CODE += ( -76220                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F1'           )
+      NAIF_BODY_CODE += ( -76221                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F2'           )
+      NAIF_BODY_CODE += ( -76222                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F3'           )
+      NAIF_BODY_CODE += ( -76223                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F4'           )
+      NAIF_BODY_CODE += ( -76224                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F5'           )
+      NAIF_BODY_CODE += ( -76225                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F6'           )
+      NAIF_BODY_CODE += ( -76226                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F7'           )
+      NAIF_BODY_CODE += ( -76227                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MASTCAM_RIGHT_F8'           )
+      NAIF_BODY_CODE += ( -76228                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_NAVCAM_LEFT_A'              )
+      NAIF_BODY_CODE += ( -76231                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_NAVCAM_RIGHT_A'             )
+      NAIF_BODY_CODE += ( -76232                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_NAVCAM_LEFT_B'              )
+      NAIF_BODY_CODE += ( -76233                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_NAVCAM_RIGHT_B'             )
+      NAIF_BODY_CODE += ( -76234                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHEMCAM'                    )
+      NAIF_BODY_CODE += ( -76240                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHEMCAM_LIBS_LASER'         )
+      NAIF_BODY_CODE += ( -76241                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHEMCAM_LIBS_CAM'           )
+      NAIF_BODY_CODE += ( -76242                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHEMCAM_RMI'                )
+      NAIF_BODY_CODE += ( -76243                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1'                 )
+      NAIF_BODY_CODE += ( -76250                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1_WS1'             )
+      NAIF_BODY_CODE += ( -76251                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1_WS2'             )
+      NAIF_BODY_CODE += ( -76252                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1_WS3'             )
+      NAIF_BODY_CODE += ( -76253                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1_ATS'             )
+      NAIF_BODY_CODE += ( -76254                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1_GTS'             )
+      NAIF_BODY_CODE += ( -76255                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM1_TIP'             )
+      NAIF_BODY_CODE += ( -76256                           )
+
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2'                 )
+      NAIF_BODY_CODE += ( -76260                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2_WS1'             )
+      NAIF_BODY_CODE += ( -76261                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2_WS2'             )
+      NAIF_BODY_CODE += ( -76262                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2_WS3'             )
+      NAIF_BODY_CODE += ( -76263                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2_ATS'             )
+      NAIF_BODY_CODE += ( -76264                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2_HS'              )
+      NAIF_BODY_CODE += ( -76265                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_REMS_BOOM2_TIP'             )
+      NAIF_BODY_CODE += ( -76266                           )
+
+      NAIF_BODY_NAME += ( 'MSL_RA_BASE'                    )
+      NAIF_BODY_CODE += ( -76300                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RA_SHOULDER_AZ'             )
+      NAIF_BODY_CODE += ( -76301                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RA_SHOULDER_EL'             )
+      NAIF_BODY_CODE += ( -76302                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RA_ELBOW'                   )
+      NAIF_BODY_CODE += ( -76303                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RA_WRIST'                   )
+      NAIF_BODY_CODE += ( -76304                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RA_TURRET'                  )
+      NAIF_BODY_CODE += ( -76305                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_RA_TURRET_HEAD'             )
+      NAIF_BODY_CODE += ( -76306                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MAHLI_REF'                  )
+      NAIF_BODY_CODE += ( -76310                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_MAHLI'                      )
+      NAIF_BODY_CODE += ( -76311                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_APXS_REF'                   )
+      NAIF_BODY_CODE += ( -76320                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_APXS'                       )
+      NAIF_BODY_CODE += ( -76321                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_PADS_REF'                   )
+      NAIF_BODY_CODE += ( -76330                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_PADS'                       )
+      NAIF_BODY_CODE += ( -76331                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DRT_REF'                    )
+      NAIF_BODY_CODE += ( -76340                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_DRT'                        )
+      NAIF_BODY_CODE += ( -76341                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHIMRA_REF'                 )
+      NAIF_BODY_CODE += ( -76350                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_CHIMRA'                     )
+      NAIF_BODY_CODE += ( -76351                           )
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_FD_RESTRAINT_PORT'          )
+      NAIF_BODY_CODE += ( -76401                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_RESTRAINT_SBRD'          )
+      NAIF_BODY_CODE += ( -76402                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_DECK_SIDE_PORT'          )
+      NAIF_BODY_CODE += ( -76403                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_DECK_FRONT_PORT'         )
+      NAIF_BODY_CODE += ( -76404                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_DECK_CENTER_PORT'        )
+      NAIF_BODY_CODE += ( -76405                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_DECK_CENTER_SBRD'        )
+      NAIF_BODY_CODE += ( -76406                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_DECK_FRONT_SBRD'         )
+      NAIF_BODY_CODE += ( -76407                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_OCM_PORT'                )
+      NAIF_BODY_CODE += ( -76408                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_OCM_CENTER'              )
+      NAIF_BODY_CODE += ( -76409                           )
+
+      NAIF_BODY_NAME += ( 'MSL_FD_OCM_STARBOARD'           )
+      NAIF_BODY_CODE += ( -76410                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SCI_OBS_TRAY'               )
+      NAIF_BODY_CODE += ( -76411                           )
+
+      NAIF_BODY_NAME += ( 'MSL_ENG_OBS_TRAY'               )
+      NAIF_BODY_CODE += ( -76412                           )
+
+      NAIF_BODY_NAME += ( 'MSL_BIT_BOX_1_TARGET'           )
+      NAIF_BODY_CODE += ( -76413                           )
+
+      NAIF_BODY_NAME += ( 'MSL_BIT_BOX_2_TARGET'           )
+      NAIF_BODY_CODE += ( -76414                           )
+
+      NAIF_BODY_NAME += ( 'MSL_OCM_LOCATION_1'             )
+      NAIF_BODY_CODE += ( -76415                           )
+
+      NAIF_BODY_NAME += ( 'MSL_OCM_LOCATION_2'             )
+      NAIF_BODY_CODE += ( -76416                           )
+
+      NAIF_BODY_NAME += ( 'MSL_OCM_LOCATION_3'             )
+      NAIF_BODY_CODE += ( -76417                           )
+
+      NAIF_BODY_NAME += ( 'MSL_OCM_LOCATION_4'             )
+      NAIF_BODY_CODE += ( -76418                           )
+
+      NAIF_BODY_NAME += ( 'MSL_OCM_LOCATION_5'             )
+      NAIF_BODY_CODE += ( -76419                           )
+
+      NAIF_BODY_NAME += ( 'MSL_OCM_LOCATION_6'             )
+      NAIF_BODY_CODE += ( -76420                           )
+
+      NAIF_BODY_NAME += ( 'MSL_APXS_CALTARGET'             )
+      NAIF_BODY_CODE += ( -76421                           )
+
+      NAIF_BODY_NAME += ( 'MSL_MAHLI_CALTARGET'            )
+      NAIF_BODY_CODE += ( -76422                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL1'                  )
+      NAIF_BODY_CODE += ( -76423                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL2'                  )
+      NAIF_BODY_CODE += ( -76424                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL3'                  )
+      NAIF_BODY_CODE += ( -76425                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL4'                  )
+      NAIF_BODY_CODE += ( -76426                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL5'                  )
+      NAIF_BODY_CODE += ( -76427                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL6'                  )
+      NAIF_BODY_CODE += ( -76428                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL7'                  )
+      NAIF_BODY_CODE += ( -76429                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL8'                  )
+      NAIF_BODY_CODE += ( -76430                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL9'                  )
+      NAIF_BODY_CODE += ( -76431                           )
+
+      NAIF_BODY_NAME += ( 'MSL_CCAM_CAL10'                 )
+      NAIF_BODY_CODE += ( -76432                           )
+
+      NAIF_BODY_NAME += ( 'MSL_MCAM_CAL'                   )
+      NAIF_BODY_CODE += ( -76433                           )
+
+   \begintext
+
+   MSL site name to NAIF ID mappings.
+
+   \begindata
+                                                            
+      NAIF_BODY_NAME += ( 'MSL_SITE_1'                     )
+      NAIF_BODY_CODE += ( -76501                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_2'                     )
+      NAIF_BODY_CODE += ( -76502                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_3'                     )
+      NAIF_BODY_CODE += ( -76503                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_4'                     )
+      NAIF_BODY_CODE += ( -76504                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_5'                     )
+      NAIF_BODY_CODE += ( -76505                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_6'                     )
+      NAIF_BODY_CODE += ( -76506                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_7'                     )
+      NAIF_BODY_CODE += ( -76507                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_8'                     )
+      NAIF_BODY_CODE += ( -76508                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_9'                     )
+      NAIF_BODY_CODE += ( -76509                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_10'                    )
+      NAIF_BODY_CODE += ( -76510                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_11'                    )
+      NAIF_BODY_CODE += ( -76511                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_12'                    )
+      NAIF_BODY_CODE += ( -76512                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_13'                    )
+      NAIF_BODY_CODE += ( -76513                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_14'                    )
+      NAIF_BODY_CODE += ( -76514                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_15'                    )
+      NAIF_BODY_CODE += ( -76515                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_16'                    )
+      NAIF_BODY_CODE += ( -76516                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_17'                    )
+      NAIF_BODY_CODE += ( -76517                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_18'                    )
+      NAIF_BODY_CODE += ( -76518                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_19'                    )
+      NAIF_BODY_CODE += ( -76519                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_20'                    )
+      NAIF_BODY_CODE += ( -76520                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_21'                    )
+      NAIF_BODY_CODE += ( -76521                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_22'                    )
+      NAIF_BODY_CODE += ( -76522                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_23'                    )
+      NAIF_BODY_CODE += ( -76523                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_24'                    )
+      NAIF_BODY_CODE += ( -76524                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_25'                    )
+      NAIF_BODY_CODE += ( -76525                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_26'                    )
+      NAIF_BODY_CODE += ( -76526                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_27'                    )
+      NAIF_BODY_CODE += ( -76527                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_28'                    )
+      NAIF_BODY_CODE += ( -76528                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_29'                    )
+      NAIF_BODY_CODE += ( -76529                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_30'                    )
+      NAIF_BODY_CODE += ( -76530                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_31'                    )
+      NAIF_BODY_CODE += ( -76531                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_32'                    )
+      NAIF_BODY_CODE += ( -76532                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_33'                    )
+      NAIF_BODY_CODE += ( -76533                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_34'                    )
+      NAIF_BODY_CODE += ( -76534                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_35'                    )
+      NAIF_BODY_CODE += ( -76535                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_36'                    )
+      NAIF_BODY_CODE += ( -76536                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_37'                    )
+      NAIF_BODY_CODE += ( -76537                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_38'                    )
+      NAIF_BODY_CODE += ( -76538                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_39'                    )
+      NAIF_BODY_CODE += ( -76539                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_40'                    )
+      NAIF_BODY_CODE += ( -76540                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_41'                    )
+      NAIF_BODY_CODE += ( -76541                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_42'                    )
+      NAIF_BODY_CODE += ( -76542                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_43'                    )
+      NAIF_BODY_CODE += ( -76543                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_44'                    )
+      NAIF_BODY_CODE += ( -76544                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_45'                    )
+      NAIF_BODY_CODE += ( -76545                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_46'                    )
+      NAIF_BODY_CODE += ( -76546                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_47'                    )
+      NAIF_BODY_CODE += ( -76547                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_48'                    )
+      NAIF_BODY_CODE += ( -76548                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_49'                    )
+      NAIF_BODY_CODE += ( -76549                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_50'                    )
+      NAIF_BODY_CODE += ( -76550                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_51'                    )
+      NAIF_BODY_CODE += ( -76551                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_52'                    )
+      NAIF_BODY_CODE += ( -76552                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_53'                    )
+      NAIF_BODY_CODE += ( -76553                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_54'                    )
+      NAIF_BODY_CODE += ( -76554                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_55'                    )
+      NAIF_BODY_CODE += ( -76555                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_56'                    )
+      NAIF_BODY_CODE += ( -76556                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_57'                    )
+      NAIF_BODY_CODE += ( -76557                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_58'                    )
+      NAIF_BODY_CODE += ( -76558                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_59'                    )
+      NAIF_BODY_CODE += ( -76559                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_60'                    )
+      NAIF_BODY_CODE += ( -76560                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_61'                    )
+      NAIF_BODY_CODE += ( -76561                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_62'                    )
+      NAIF_BODY_CODE += ( -76562                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_63'                    )
+      NAIF_BODY_CODE += ( -76563                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_64'                    )
+      NAIF_BODY_CODE += ( -76564                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_65'                    )
+      NAIF_BODY_CODE += ( -76565                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_66'                    )
+      NAIF_BODY_CODE += ( -76566                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_67'                    )
+      NAIF_BODY_CODE += ( -76567                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_68'                    )
+      NAIF_BODY_CODE += ( -76568                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_69'                    )
+      NAIF_BODY_CODE += ( -76569                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_70'                    )
+      NAIF_BODY_CODE += ( -76570                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_71'                    )
+      NAIF_BODY_CODE += ( -76571                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_72'                    )
+      NAIF_BODY_CODE += ( -76572                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_73'                    )
+      NAIF_BODY_CODE += ( -76573                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_74'                    )
+      NAIF_BODY_CODE += ( -76574                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_75'                    )
+      NAIF_BODY_CODE += ( -76575                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_76'                    )
+      NAIF_BODY_CODE += ( -76576                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_77'                    )
+      NAIF_BODY_CODE += ( -76577                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_78'                    )
+      NAIF_BODY_CODE += ( -76578                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_79'                    )
+      NAIF_BODY_CODE += ( -76579                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_80'                    )
+      NAIF_BODY_CODE += ( -76580                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_81'                    )
+      NAIF_BODY_CODE += ( -76581                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_82'                    )
+      NAIF_BODY_CODE += ( -76582                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_83'                    )
+      NAIF_BODY_CODE += ( -76583                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_84'                    )
+      NAIF_BODY_CODE += ( -76584                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_85'                    )
+      NAIF_BODY_CODE += ( -76585                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_86'                    )
+      NAIF_BODY_CODE += ( -76586                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_87'                    )
+      NAIF_BODY_CODE += ( -76587                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_88'                    )
+      NAIF_BODY_CODE += ( -76588                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_89'                    )
+      NAIF_BODY_CODE += ( -76589                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_90'                    )
+      NAIF_BODY_CODE += ( -76590                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_91'                    )
+      NAIF_BODY_CODE += ( -76591                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_92'                    )
+      NAIF_BODY_CODE += ( -76592                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_93'                    )
+      NAIF_BODY_CODE += ( -76593                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_94'                    )
+      NAIF_BODY_CODE += ( -76594                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_95'                    )
+      NAIF_BODY_CODE += ( -76595                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_96'                    )
+      NAIF_BODY_CODE += ( -76596                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_97'                    )
+      NAIF_BODY_CODE += ( -76597                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_98'                    )
+      NAIF_BODY_CODE += ( -76598                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_99'                    )
+      NAIF_BODY_CODE += ( -76599                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_100'                   )
+      NAIF_BODY_CODE += ( -76600                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_101'                   )
+      NAIF_BODY_CODE += ( -76601                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_102'                   )
+      NAIF_BODY_CODE += ( -76602                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_103'                   )
+      NAIF_BODY_CODE += ( -76603                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_104'                   )
+      NAIF_BODY_CODE += ( -76604                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_105'                   )
+      NAIF_BODY_CODE += ( -76605                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_106'                   )
+      NAIF_BODY_CODE += ( -76606                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_107'                   )
+      NAIF_BODY_CODE += ( -76607                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_108'                   )
+      NAIF_BODY_CODE += ( -76608                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_109'                   )
+      NAIF_BODY_CODE += ( -76609                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_110'                   )
+      NAIF_BODY_CODE += ( -76610                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_111'                   )
+      NAIF_BODY_CODE += ( -76611                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_112'                   )
+      NAIF_BODY_CODE += ( -76612                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_113'                   )
+      NAIF_BODY_CODE += ( -76613                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_114'                   )
+      NAIF_BODY_CODE += ( -76614                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_115'                   )
+      NAIF_BODY_CODE += ( -76615                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_116'                   )
+      NAIF_BODY_CODE += ( -76616                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_117'                   )
+      NAIF_BODY_CODE += ( -76617                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_118'                   )
+      NAIF_BODY_CODE += ( -76618                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_119'                   )
+      NAIF_BODY_CODE += ( -76619                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_120'                   )
+      NAIF_BODY_CODE += ( -76620                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_121'                   )
+      NAIF_BODY_CODE += ( -76621                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_122'                   )
+      NAIF_BODY_CODE += ( -76622                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_123'                   )
+      NAIF_BODY_CODE += ( -76623                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_124'                   )
+      NAIF_BODY_CODE += ( -76624                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_125'                   )
+      NAIF_BODY_CODE += ( -76625                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_126'                   )
+      NAIF_BODY_CODE += ( -76626                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_127'                   )
+      NAIF_BODY_CODE += ( -76627                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_128'                   )
+      NAIF_BODY_CODE += ( -76628                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_129'                   )
+      NAIF_BODY_CODE += ( -76629                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_130'                   )
+      NAIF_BODY_CODE += ( -76630                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_131'                   )
+      NAIF_BODY_CODE += ( -76631                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_132'                   )
+      NAIF_BODY_CODE += ( -76632                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_133'                   )
+      NAIF_BODY_CODE += ( -76633                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_134'                   )
+      NAIF_BODY_CODE += ( -76634                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_135'                   )
+      NAIF_BODY_CODE += ( -76635                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_136'                   )
+      NAIF_BODY_CODE += ( -76636                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_137'                   )
+      NAIF_BODY_CODE += ( -76637                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_138'                   )
+      NAIF_BODY_CODE += ( -76638                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_139'                   )
+      NAIF_BODY_CODE += ( -76639                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_140'                   )
+      NAIF_BODY_CODE += ( -76640                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_141'                   )
+      NAIF_BODY_CODE += ( -76641                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_142'                   )
+      NAIF_BODY_CODE += ( -76642                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_143'                   )
+      NAIF_BODY_CODE += ( -76643                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_144'                   )
+      NAIF_BODY_CODE += ( -76644                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_145'                   )
+      NAIF_BODY_CODE += ( -76645                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_146'                   )
+      NAIF_BODY_CODE += ( -76646                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_147'                   )
+      NAIF_BODY_CODE += ( -76647                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_148'                   )
+      NAIF_BODY_CODE += ( -76648                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_149'                   )
+      NAIF_BODY_CODE += ( -76649                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_150'                   )
+      NAIF_BODY_CODE += ( -76650                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_151'                   )
+      NAIF_BODY_CODE += ( -76651                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_152'                   )
+      NAIF_BODY_CODE += ( -76652                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_153'                   )
+      NAIF_BODY_CODE += ( -76653                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_154'                   )
+      NAIF_BODY_CODE += ( -76654                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_155'                   )
+      NAIF_BODY_CODE += ( -76655                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_156'                   )
+      NAIF_BODY_CODE += ( -76656                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_157'                   )
+      NAIF_BODY_CODE += ( -76657                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_158'                   )
+      NAIF_BODY_CODE += ( -76658                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_159'                   )
+      NAIF_BODY_CODE += ( -76659                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_160'                   )
+      NAIF_BODY_CODE += ( -76660                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_161'                   )
+      NAIF_BODY_CODE += ( -76661                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_162'                   )
+      NAIF_BODY_CODE += ( -76662                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_163'                   )
+      NAIF_BODY_CODE += ( -76663                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_164'                   )
+      NAIF_BODY_CODE += ( -76664                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_165'                   )
+      NAIF_BODY_CODE += ( -76665                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_166'                   )
+      NAIF_BODY_CODE += ( -76666                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_167'                   )
+      NAIF_BODY_CODE += ( -76667                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_168'                   )
+      NAIF_BODY_CODE += ( -76668                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_169'                   )
+      NAIF_BODY_CODE += ( -76669                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_170'                   )
+      NAIF_BODY_CODE += ( -76670                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_171'                   )
+      NAIF_BODY_CODE += ( -76671                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_172'                   )
+      NAIF_BODY_CODE += ( -76672                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_173'                   )
+      NAIF_BODY_CODE += ( -76673                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_174'                   )
+      NAIF_BODY_CODE += ( -76674                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_175'                   )
+      NAIF_BODY_CODE += ( -76675                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_176'                   )
+      NAIF_BODY_CODE += ( -76676                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_177'                   )
+      NAIF_BODY_CODE += ( -76677                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_178'                   )
+      NAIF_BODY_CODE += ( -76678                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_179'                   )
+      NAIF_BODY_CODE += ( -76679                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_180'                   )
+      NAIF_BODY_CODE += ( -76680                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_181'                   )
+      NAIF_BODY_CODE += ( -76681                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_182'                   )
+      NAIF_BODY_CODE += ( -76682                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_183'                   )
+      NAIF_BODY_CODE += ( -76683                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_184'                   )
+      NAIF_BODY_CODE += ( -76684                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_185'                   )
+      NAIF_BODY_CODE += ( -76685                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_186'                   )
+      NAIF_BODY_CODE += ( -76686                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_187'                   )
+      NAIF_BODY_CODE += ( -76687                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_188'                   )
+      NAIF_BODY_CODE += ( -76688                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_189'                   )
+      NAIF_BODY_CODE += ( -76689                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_190'                   )
+      NAIF_BODY_CODE += ( -76690                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_191'                   )
+      NAIF_BODY_CODE += ( -76691                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_192'                   )
+      NAIF_BODY_CODE += ( -76692                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_193'                   )
+      NAIF_BODY_CODE += ( -76693                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_194'                   )
+      NAIF_BODY_CODE += ( -76694                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_195'                   )
+      NAIF_BODY_CODE += ( -76695                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_196'                   )
+      NAIF_BODY_CODE += ( -76696                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_197'                   )
+      NAIF_BODY_CODE += ( -76697                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_198'                   )
+      NAIF_BODY_CODE += ( -76698                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_199'                   )
+      NAIF_BODY_CODE += ( -76699                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_200'                   )
+      NAIF_BODY_CODE += ( -76700                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_201'                   )
+      NAIF_BODY_CODE += ( -76701                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_202'                   )
+      NAIF_BODY_CODE += ( -76702                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_203'                   )
+      NAIF_BODY_CODE += ( -76703                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_204'                   )
+      NAIF_BODY_CODE += ( -76704                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_205'                   )
+      NAIF_BODY_CODE += ( -76705                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_206'                   )
+      NAIF_BODY_CODE += ( -76706                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_207'                   )
+      NAIF_BODY_CODE += ( -76707                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_208'                   )
+      NAIF_BODY_CODE += ( -76708                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_209'                   )
+      NAIF_BODY_CODE += ( -76709                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_210'                   )
+      NAIF_BODY_CODE += ( -76710                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_211'                   )
+      NAIF_BODY_CODE += ( -76711                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_212'                   )
+      NAIF_BODY_CODE += ( -76712                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_213'                   )
+      NAIF_BODY_CODE += ( -76713                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_214'                   )
+      NAIF_BODY_CODE += ( -76714                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_215'                   )
+      NAIF_BODY_CODE += ( -76715                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_216'                   )
+      NAIF_BODY_CODE += ( -76716                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_217'                   )
+      NAIF_BODY_CODE += ( -76717                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_218'                   )
+      NAIF_BODY_CODE += ( -76718                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_219'                   )
+      NAIF_BODY_CODE += ( -76719                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_220'                   )
+      NAIF_BODY_CODE += ( -76720                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_221'                   )
+      NAIF_BODY_CODE += ( -76721                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_222'                   )
+      NAIF_BODY_CODE += ( -76722                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_223'                   )
+      NAIF_BODY_CODE += ( -76723                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_224'                   )
+      NAIF_BODY_CODE += ( -76724                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_225'                   )
+      NAIF_BODY_CODE += ( -76725                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_226'                   )
+      NAIF_BODY_CODE += ( -76726                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_227'                   )
+      NAIF_BODY_CODE += ( -76727                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_228'                   )
+      NAIF_BODY_CODE += ( -76728                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_229'                   )
+      NAIF_BODY_CODE += ( -76729                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_230'                   )
+      NAIF_BODY_CODE += ( -76730                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_231'                   )
+      NAIF_BODY_CODE += ( -76731                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_232'                   )
+      NAIF_BODY_CODE += ( -76732                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_233'                   )
+      NAIF_BODY_CODE += ( -76733                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_234'                   )
+      NAIF_BODY_CODE += ( -76734                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_235'                   )
+      NAIF_BODY_CODE += ( -76735                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_236'                   )
+      NAIF_BODY_CODE += ( -76736                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_237'                   )
+      NAIF_BODY_CODE += ( -76737                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_238'                   )
+      NAIF_BODY_CODE += ( -76738                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_239'                   )
+      NAIF_BODY_CODE += ( -76739                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_240'                   )
+      NAIF_BODY_CODE += ( -76740                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_241'                   )
+      NAIF_BODY_CODE += ( -76741                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_242'                   )
+      NAIF_BODY_CODE += ( -76742                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_243'                   )
+      NAIF_BODY_CODE += ( -76743                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_244'                   )
+      NAIF_BODY_CODE += ( -76744                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_245'                   )
+      NAIF_BODY_CODE += ( -76745                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_246'                   )
+      NAIF_BODY_CODE += ( -76746                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_247'                   )
+      NAIF_BODY_CODE += ( -76747                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_248'                   )
+      NAIF_BODY_CODE += ( -76748                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_249'                   )
+      NAIF_BODY_CODE += ( -76749                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_250'                   )
+      NAIF_BODY_CODE += ( -76750                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_251'                   )
+      NAIF_BODY_CODE += ( -76751                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_252'                   )
+      NAIF_BODY_CODE += ( -76752                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_253'                   )
+      NAIF_BODY_CODE += ( -76753                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_254'                   )
+      NAIF_BODY_CODE += ( -76754                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_255'                   )
+      NAIF_BODY_CODE += ( -76755                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_256'                   )
+      NAIF_BODY_CODE += ( -76756                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_257'                   )
+      NAIF_BODY_CODE += ( -76757                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_258'                   )
+      NAIF_BODY_CODE += ( -76758                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_259'                   )
+      NAIF_BODY_CODE += ( -76759                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_260'                   )
+      NAIF_BODY_CODE += ( -76760                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_261'                   )
+      NAIF_BODY_CODE += ( -76761                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_262'                   )
+      NAIF_BODY_CODE += ( -76762                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_263'                   )
+      NAIF_BODY_CODE += ( -76763                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_264'                   )
+      NAIF_BODY_CODE += ( -76764                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_265'                   )
+      NAIF_BODY_CODE += ( -76765                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_266'                   )
+      NAIF_BODY_CODE += ( -76766                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_267'                   )
+      NAIF_BODY_CODE += ( -76767                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_268'                   )
+      NAIF_BODY_CODE += ( -76768                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_269'                   )
+      NAIF_BODY_CODE += ( -76769                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_270'                   )
+      NAIF_BODY_CODE += ( -76770                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_271'                   )
+      NAIF_BODY_CODE += ( -76771                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_272'                   )
+      NAIF_BODY_CODE += ( -76772                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_273'                   )
+      NAIF_BODY_CODE += ( -76773                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_274'                   )
+      NAIF_BODY_CODE += ( -76774                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_275'                   )
+      NAIF_BODY_CODE += ( -76775                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_276'                   )
+      NAIF_BODY_CODE += ( -76776                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_277'                   )
+      NAIF_BODY_CODE += ( -76777                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_278'                   )
+      NAIF_BODY_CODE += ( -76778                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_279'                   )
+      NAIF_BODY_CODE += ( -76779                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_280'                   )
+      NAIF_BODY_CODE += ( -76780                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_281'                   )
+      NAIF_BODY_CODE += ( -76781                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_282'                   )
+      NAIF_BODY_CODE += ( -76782                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_283'                   )
+      NAIF_BODY_CODE += ( -76783                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_284'                   )
+      NAIF_BODY_CODE += ( -76784                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_285'                   )
+      NAIF_BODY_CODE += ( -76785                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_286'                   )
+      NAIF_BODY_CODE += ( -76786                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_287'                   )
+      NAIF_BODY_CODE += ( -76787                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_288'                   )
+      NAIF_BODY_CODE += ( -76788                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_289'                   )
+      NAIF_BODY_CODE += ( -76789                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_290'                   )
+      NAIF_BODY_CODE += ( -76790                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_291'                   )
+      NAIF_BODY_CODE += ( -76791                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_292'                   )
+      NAIF_BODY_CODE += ( -76792                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_293'                   )
+      NAIF_BODY_CODE += ( -76793                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_294'                   )
+      NAIF_BODY_CODE += ( -76794                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_295'                   )
+      NAIF_BODY_CODE += ( -76795                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_296'                   )
+      NAIF_BODY_CODE += ( -76796                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_297'                   )
+      NAIF_BODY_CODE += ( -76797                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_298'                   )
+      NAIF_BODY_CODE += ( -76798                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_299'                   )
+      NAIF_BODY_CODE += ( -76799                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_300'                   )
+      NAIF_BODY_CODE += ( -76800                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_301'                   )
+      NAIF_BODY_CODE += ( -76801                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_302'                   )
+      NAIF_BODY_CODE += ( -76802                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_303'                   )
+      NAIF_BODY_CODE += ( -76803                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_304'                   )
+      NAIF_BODY_CODE += ( -76804                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_305'                   )
+      NAIF_BODY_CODE += ( -76805                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_306'                   )
+      NAIF_BODY_CODE += ( -76806                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_307'                   )
+      NAIF_BODY_CODE += ( -76807                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_308'                   )
+      NAIF_BODY_CODE += ( -76808                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_309'                   )
+      NAIF_BODY_CODE += ( -76809                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_310'                   )
+      NAIF_BODY_CODE += ( -76810                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_311'                   )
+      NAIF_BODY_CODE += ( -76811                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_312'                   )
+      NAIF_BODY_CODE += ( -76812                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_313'                   )
+      NAIF_BODY_CODE += ( -76813                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_314'                   )
+      NAIF_BODY_CODE += ( -76814                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_315'                   )
+      NAIF_BODY_CODE += ( -76815                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_316'                   )
+      NAIF_BODY_CODE += ( -76816                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_317'                   )
+      NAIF_BODY_CODE += ( -76817                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_318'                   )
+      NAIF_BODY_CODE += ( -76818                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_319'                   )
+      NAIF_BODY_CODE += ( -76819                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_320'                   )
+      NAIF_BODY_CODE += ( -76820                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_321'                   )
+      NAIF_BODY_CODE += ( -76821                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_322'                   )
+      NAIF_BODY_CODE += ( -76822                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_323'                   )
+      NAIF_BODY_CODE += ( -76823                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_324'                   )
+      NAIF_BODY_CODE += ( -76824                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_325'                   )
+      NAIF_BODY_CODE += ( -76825                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_326'                   )
+      NAIF_BODY_CODE += ( -76826                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_327'                   )
+      NAIF_BODY_CODE += ( -76827                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_328'                   )
+      NAIF_BODY_CODE += ( -76828                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_329'                   )
+      NAIF_BODY_CODE += ( -76829                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_330'                   )
+      NAIF_BODY_CODE += ( -76830                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_331'                   )
+      NAIF_BODY_CODE += ( -76831                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_332'                   )
+      NAIF_BODY_CODE += ( -76832                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_333'                   )
+      NAIF_BODY_CODE += ( -76833                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_334'                   )
+      NAIF_BODY_CODE += ( -76834                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_335'                   )
+      NAIF_BODY_CODE += ( -76835                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_336'                   )
+      NAIF_BODY_CODE += ( -76836                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_337'                   )
+      NAIF_BODY_CODE += ( -76837                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_338'                   )
+      NAIF_BODY_CODE += ( -76838                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_339'                   )
+      NAIF_BODY_CODE += ( -76839                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_340'                   )
+      NAIF_BODY_CODE += ( -76840                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_341'                   )
+      NAIF_BODY_CODE += ( -76841                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_342'                   )
+      NAIF_BODY_CODE += ( -76842                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_343'                   )
+      NAIF_BODY_CODE += ( -76843                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_344'                   )
+      NAIF_BODY_CODE += ( -76844                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_345'                   )
+      NAIF_BODY_CODE += ( -76845                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_346'                   )
+      NAIF_BODY_CODE += ( -76846                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_347'                   )
+      NAIF_BODY_CODE += ( -76847                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_348'                   )
+      NAIF_BODY_CODE += ( -76848                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_349'                   )
+      NAIF_BODY_CODE += ( -76849                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_350'                   )
+      NAIF_BODY_CODE += ( -76850                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_351'                   )
+      NAIF_BODY_CODE += ( -76851                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_352'                   )
+      NAIF_BODY_CODE += ( -76852                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_353'                   )
+      NAIF_BODY_CODE += ( -76853                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_354'                   )
+      NAIF_BODY_CODE += ( -76854                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_355'                   )
+      NAIF_BODY_CODE += ( -76855                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_356'                   )
+      NAIF_BODY_CODE += ( -76856                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_357'                   )
+      NAIF_BODY_CODE += ( -76857                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_358'                   )
+      NAIF_BODY_CODE += ( -76858                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_359'                   )
+      NAIF_BODY_CODE += ( -76859                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_360'                   )
+      NAIF_BODY_CODE += ( -76860                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_361'                   )
+      NAIF_BODY_CODE += ( -76861                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_362'                   )
+      NAIF_BODY_CODE += ( -76862                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_363'                   )
+      NAIF_BODY_CODE += ( -76863                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_364'                   )
+      NAIF_BODY_CODE += ( -76864                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_365'                   )
+      NAIF_BODY_CODE += ( -76865                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_366'                   )
+      NAIF_BODY_CODE += ( -76866                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_367'                   )
+      NAIF_BODY_CODE += ( -76867                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_368'                   )
+      NAIF_BODY_CODE += ( -76868                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_369'                   )
+      NAIF_BODY_CODE += ( -76869                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_370'                   )
+      NAIF_BODY_CODE += ( -76870                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_371'                   )
+      NAIF_BODY_CODE += ( -76871                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_372'                   )
+      NAIF_BODY_CODE += ( -76872                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_373'                   )
+      NAIF_BODY_CODE += ( -76873                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_374'                   )
+      NAIF_BODY_CODE += ( -76874                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_375'                   )
+      NAIF_BODY_CODE += ( -76875                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_376'                   )
+      NAIF_BODY_CODE += ( -76876                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_377'                   )
+      NAIF_BODY_CODE += ( -76877                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_378'                   )
+      NAIF_BODY_CODE += ( -76878                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_379'                   )
+      NAIF_BODY_CODE += ( -76879                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_380'                   )
+      NAIF_BODY_CODE += ( -76880                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_381'                   )
+      NAIF_BODY_CODE += ( -76881                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_382'                   )
+      NAIF_BODY_CODE += ( -76882                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_383'                   )
+      NAIF_BODY_CODE += ( -76883                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_384'                   )
+      NAIF_BODY_CODE += ( -76884                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_385'                   )
+      NAIF_BODY_CODE += ( -76885                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_386'                   )
+      NAIF_BODY_CODE += ( -76886                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_387'                   )
+      NAIF_BODY_CODE += ( -76887                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_388'                   )
+      NAIF_BODY_CODE += ( -76888                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_389'                   )
+      NAIF_BODY_CODE += ( -76889                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_390'                   )
+      NAIF_BODY_CODE += ( -76890                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_391'                   )
+      NAIF_BODY_CODE += ( -76891                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_392'                   )
+      NAIF_BODY_CODE += ( -76892                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_393'                   )
+      NAIF_BODY_CODE += ( -76893                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_394'                   )
+      NAIF_BODY_CODE += ( -76894                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_395'                   )
+      NAIF_BODY_CODE += ( -76895                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_396'                   )
+      NAIF_BODY_CODE += ( -76896                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_397'                   )
+      NAIF_BODY_CODE += ( -76897                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_398'                   )
+      NAIF_BODY_CODE += ( -76898                           )
+
+      NAIF_BODY_NAME += ( 'MSL_SITE_399'                   )
+      NAIF_BODY_CODE += ( -76899                           )
+
+   \begintext
+
+End of FK file.
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/naif0012.tls b/tests/pytests/data/2264ML0121141200805116C00_DRCL/naif0012.tls
new file mode 100755
index 0000000000000000000000000000000000000000..e1afdee1b626e01a3f1b04ef8a43154e83972e56
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/naif0012.tls
@@ -0,0 +1,152 @@
+KPL/LSK
+
+
+LEAPSECONDS KERNEL FILE
+===========================================================================
+
+Modifications:
+--------------
+
+2016, Jul. 14   NJB  Modified file to account for the leapsecond that
+                     will occur on December 31, 2016.
+
+2015, Jan. 5    NJB  Modified file to account for the leapsecond that
+                     will occur on June 30, 2015.
+
+2012, Jan. 5    NJB  Modified file to account for the leapsecond that
+                     will occur on June 30, 2012.
+                     
+2008, Jul. 7    NJB  Modified file to account for the leapsecond that
+                     will occur on December 31, 2008.
+                     
+2005, Aug. 3    NJB  Modified file to account for the leapsecond that
+                     will occur on December 31, 2005.
+                     
+1998, Jul  17   WLT  Modified file to account for the leapsecond that
+                     will occur on December 31, 1998.
+                     
+1997, Feb  22   WLT  Modified file to account for the leapsecond that
+                     will occur on June 30, 1997.
+                     
+1995, Dec  14   KSZ  Corrected date of last leapsecond from 1-1-95
+                     to 1-1-96.
+
+1995, Oct  25   WLT  Modified file to account for the leapsecond that
+                     will occur on Dec 31, 1995.
+
+1994, Jun  16   WLT  Modified file to account for the leapsecond on
+                     June 30, 1994.
+
+1993, Feb. 22  CHA   Modified file to account for the leapsecond on
+                     June 30, 1993.
+
+1992, Mar. 6   HAN   Modified file to account for the leapsecond on
+                     June 30, 1992.
+
+1990, Oct. 8   HAN   Modified file to account for the leapsecond on 
+                     Dec. 31, 1990.  
+
+
+Explanation:
+------------
+
+The contents of this file are used by the routine DELTET to compute the 
+time difference
+
+[1]       DELTA_ET  =  ET - UTC                                         
+          
+the increment to be applied to UTC to give ET. 
+
+The difference between UTC and TAI,
+
+[2]       DELTA_AT  =  TAI - UTC
+
+is always an integral number of seconds. The value of DELTA_AT was 10
+seconds in January 1972, and increases by one each time a leap second
+is declared. Combining [1] and [2] gives
+
+[3]       DELTA_ET  =  ET - (TAI - DELTA_AT)
+
+                    =  (ET - TAI) + DELTA_AT
+
+The difference (ET - TAI) is periodic, and is given by
+
+[4]       ET - TAI  =  DELTA_T_A  + K sin E 
+
+where DELTA_T_A and K are constant, and E is the eccentric anomaly of the 
+heliocentric orbit of the Earth-Moon barycenter. Equation [4], which ignores 
+small-period fluctuations, is accurate to about 0.000030 seconds.
+
+The eccentric anomaly E is given by 
+
+[5]       E = M + EB sin M
+
+where M is the mean anomaly, which in turn is given by 
+
+[6]       M = M  +  M t
+               0     1
+
+where t is the number of ephemeris seconds past J2000.
+
+Thus, in order to compute DELTA_ET, the following items are necessary.
+
+          DELTA_TA
+          K
+          EB
+          M0
+          M1
+          DELTA_AT      after each leap second.
+
+The numbers, and the formulation, are taken from the following sources.
+
+     1) Moyer, T.D., Transformation from Proper Time on Earth to 
+        Coordinate Time in Solar System Barycentric Space-Time Frame
+        of Reference, Parts 1 and 2, Celestial Mechanics 23 (1981),
+        33-56 and 57-68.
+
+     2) Moyer, T.D., Effects of Conversion to the J2000 Astronomical
+        Reference System on Algorithms for Computing Time Differences
+        and Clock Rates, JPL IOM 314.5--942, 1 October 1985.
+
+The variable names used above are consistent with those used in the 
+Astronomical Almanac.
+
+\begindata
+
+DELTET/DELTA_T_A       =   32.184
+DELTET/K               =    1.657D-3
+DELTET/EB              =    1.671D-2
+DELTET/M               = (  6.239996D0   1.99096871D-7 )
+
+DELTET/DELTA_AT        = ( 10,   @1972-JAN-1
+                           11,   @1972-JUL-1     
+                           12,   @1973-JAN-1     
+                           13,   @1974-JAN-1     
+                           14,   @1975-JAN-1          
+                           15,   @1976-JAN-1          
+                           16,   @1977-JAN-1          
+                           17,   @1978-JAN-1          
+                           18,   @1979-JAN-1          
+                           19,   @1980-JAN-1          
+                           20,   @1981-JUL-1          
+                           21,   @1982-JUL-1          
+                           22,   @1983-JUL-1          
+                           23,   @1985-JUL-1          
+                           24,   @1988-JAN-1 
+                           25,   @1990-JAN-1
+                           26,   @1991-JAN-1 
+                           27,   @1992-JUL-1
+                           28,   @1993-JUL-1
+                           29,   @1994-JUL-1
+                           30,   @1996-JAN-1 
+                           31,   @1997-JUL-1
+                           32,   @1999-JAN-1
+                           33,   @2006-JAN-1
+                           34,   @2009-JAN-1
+                           35,   @2012-JUL-1
+                           36,   @2015-JUL-1 
+                           37,   @2017-JAN-1 )
+
+\begintext
+
+
diff --git a/tests/pytests/data/2264ML0121141200805116C00_DRCL/pck00008.tpc b/tests/pytests/data/2264ML0121141200805116C00_DRCL/pck00008.tpc
new file mode 100755
index 0000000000000000000000000000000000000000..5bab4d06a5c9eebb715d1b50f3e4bc3fbfb4e63b
--- /dev/null
+++ b/tests/pytests/data/2264ML0121141200805116C00_DRCL/pck00008.tpc
@@ -0,0 +1,3381 @@
+KPL/PCK
+P_constants (PcK) SPICE kernel file
+===========================================================================
+
+        By: Nat Bachman (NAIF)    2004 September 21
+ 
+ 
+File Organization
+--------------------------------------------------------
+ 
+     The contents of this file are as follows.
+ 
+     Introductory Information:
+
+         --   File Organization
+ 
+         --   Version description
+ 
+         --   Disclaimer
+ 
+         --   Sources
+ 
+         --   Explanation
+ 
+         --   Body numbers and names
+ 
+
+     PcK Data:
+ 
+
+        Orientation Data
+        ----------------
+
+         --   Orientation constants for the Sun and planets.        
+              Additional items included in this section:
+
+                 - Earth north geomagnetic centered dipole values
+                   for epochs 1945-2000
+
+                 - Mars prime meridian offset "lambda_a"
+
+         --   Orientation constants for satellites
+ 
+         --   Orientation constants for asteroids Gaspra, Ida,
+              Vesta, and Eros
+ 
+
+        Radii of Bodies
+        ---------------
+
+         --   Radii of Sun and planets
+         
+         --   Radii of satellites, where available
+         
+         --   Radii of asteroids Gaspra, Ida, Kleopatra, and Eros
+
+
+
+Version description
+--------------------------------------------------------
+ 
+     This file was created on September 21, 2004.  This version
+     incorporates data from reference [2]: "Report of the IAU/IAG
+     Working Group on Cartographic Coordinates and Rotational Elements
+     of the Planets and Satellites:  2000."  Note that the 2003
+     version of this report is as yet unpublished.
+ 
+     This file contains size, shape, and orientation data for all
+     objects described by the previous version of the file, plus data
+     for the asteroids Vesta, Kleopatra, and Eros.
+                 
+ 
+Disclaimer
+--------------------------------------------------------
+ 
+
+Applicability of Data
+
+     This constants file may not contain the parameter values that
+     you prefer. Note that this file may be readily modified by
+     you or anyone else. NAIF suggests that you inspect this file
+     visually before proceeding with any critical or extended
+     data processing.
+
+File Modifications by Users
+
+     NAIF requests that you update the "by line" and date if you
+     modify this file.
+     
+Known Limitations and Caveats
+
+     In general, the orientation models given here are claimed by the
+     IAU/IAG Working Group Report [2] to be accurate to 0.1 degree
+     ([2], p.85).  However, NAIF notes that orientation models for
+     natural satellites and asteroids have in some cases changed
+     substantially with the availability of new observational data, so
+     users are urged to investigate the suitability for their
+     applications of the models presented here.
+
+   
+     NAIF strongly cautions against using the earth rotation model
+     (from [2]) given here for work demanding high accuracy.  This
+     model has been determined by NAIF to have an error in the prime
+     meridian location of magnitude at least 150 arcseconds, with a
+     local minimum occurring during the year 1999.  Regarding
+     availability of better earth orientation data for use with the
+     SPICE system:
+
+        Earth orientation data are available from NAIF in the form of
+        binary earth PCK files.  NAIF employs an automated process to
+        create these files; each time JPL's section 335 produces a new
+        earth orientation parameter (EOP) file, a new PCK is produced.
+        These PCKs cover a 12-month time span starting about nine
+        months prior to the current date.  In these PCK files, the
+        following effects are accounted for in modeling the earth's
+        rotation:
+
+
+           - Precession:                   1976 IAU model
+
+           - Nutation:                     1980 IAU model, plus interpolated
+                                           EOP nutation corrections
+
+           - Polar motion:                 interpolated from EOP file
+
+           - True sidereal time:
+
+                + UT1 - UT1R (if needed):  given by analytic formula
+                + TAI - UT1 (or UT1R):     interpolated from EOP file
+                + UT1 - GMST:              given by analytic formula
+                + equation of equinoxes:   given by analytic formula
+
+             where
+
+                TAI    =   International Atomic Time
+                UT1    =   Greenwich hour angle of computed mean sun - 12h
+                UT1R   =   Regularized UT1
+                GMST   =   Greenwich mean sidereal time                   
+
+        These kernels are available via anonymous ftp from the server
+ 
+           naif.jpl.nasa.gov
+
+        The kernels are in the path
+
+           pub/naif/generic_kernels/pck
+
+        At this time, these kernels have file names of the form
+
+           earth_000101_yymmdd_yymmdd.bpc
+
+        The second and third dates are, respectively, the file's 
+        coverage end time and the epoch of the last datum.
+ 
+        These binary PCK files are very accurate (error < 0.1
+        microradian) for epochs preceding the epoch of the last datum.
+        For later epochs, the error rises to several microradians.
+
+        Binary PCK files giving accurate earth orientation back to 1972
+        and *low accuracy* predicted earth orientation to 2023 are also
+        available in the same location.  
+
+        How does the rotation model used in the long term predict
+        binary earth PCK compare to that used in this file?  Because of
+        the unpredictability of the earth's orientation, in particular
+        of its spin, it's not possible to answer with certainty.
+        However, we can make these observations:
+
+           - The long term predict binary PCK presumably does a better
+             job of predicting the orientation of the earth's equator
+             since the binary PCK accounts for nutation and the model
+             from [2] does not.
+
+           - The prime meridian error in the model from [2] amounts
+             to, at a minimum, about 10 seconds of rotation.  It should
+             take years for the spin error of the binary long term
+             predict PCK to grow as large.
+
+        Characteristics and names of the binary kernels described here
+        are subject to change.  Contact NAIF for details concerning
+        binary earth PCKs.
+ 
+
+     The SPICE Toolkit doesn't currently contain software to model the
+     earth's north geomagnetic centered dipole as a function of time.
+     As a convenience for users, the north dipole location from the
+     J2000 epoch was selected as a representative datum, and the
+     planetocentric longitude and latitude of this location have been
+     associated with the keywords
+       
+        BODY399_N_GEOMAG_CTR_DIPOLE_LON
+        BODY399_N_GEOMAG_CTR_DIPOLE_LAT
+     
+     Values for the earth's north geomagnetic centered dipole are
+     presented in comments as a discrete time series for the time range
+     1945-2000.  For details concerning the the geomagnetic field model
+     from which these values were derived, including a discussion of
+     the model's accuracy, see [13].
+
+
+     The Mars prime meridian offset given by [10] is not used by
+     SPICE geometry software for computations involving the shape
+     of Mars (for example, in sub-observer point or surface intercept
+     computations).  The value is provided for informational
+     purposes only.
+
+
+     SPICE Toolkits prior to version N0057 cannot make use of
+     trigonometric polynomial terms in the formulas for orientation of
+     the planets. The only planet for which such terms are used is
+     Neptune.  Use of trigonometric polynomial terms for natural
+     satellites is and has been supported for all SPICE Toolkit
+     versions.
+
+
+
+ 
+ 
+Sources
+--------------------------------------------------------
+ 
+     The sources for the constants listed in this file are:
+
+        [1]   Seidelmann, P.K., Archinal, B.A., A'Hearn, M.F., 
+              Cruikshank, D.P., Hilton, J.L., Keller, H.U., Oberst, J.,
+              Simon, J.L., Stooke, P., Tholen, D.J., and Thomas, P.C.
+              "Report of the IAU/IAG Working Group on Cartographic
+              Coordinates and Rotational Elements of the Planets and
+              Satellites: 2003," Unpublished.
+ 
+        [2]   Seidelmann, P.K., Abalakin, V.K., Bursa, M., Davies, M.E.,
+              Bergh, C. de, Lieske, J.H., Oberst, J., Simon, J.L.,
+              Standish, E.M., Stooke, P., and Thomas, P.C. (2002).
+              "Report of the IAU/IAG Working Group on Cartographic
+              Coordinates and Rotational Elements of the Planets and
+              Satellites: 2000," Celestial Mechanics and Dynamical
+              Astronomy, v.82, Issue 1, pp. 83-111.
+
+        [3]   Davies, M.E., Abalakin, V.K., Bursa, M., Kinoshita, H.,
+              Kirk, R.L., Lieske, J.H., Marov, M.Ya., Seidelmann, P.K.,
+              and Simon, J.-L. "Report of the IAU/IAG/COSPAR Working
+              Group on Cartographic Coordinates and Rotational Elements
+              of the Planets and Satellites: 1997," Unpublished.
+
+        [4]   Davies, M.E., Abalakin, V.K., Bursa, M., Lieske, J.H.,
+              Morando, B., Morrison, D., Seidelmann, P.K., Sinclair,
+              A.T., Yallop, B., and Tjuflin, Y.S. (1996). "Report of
+              the IAU/IAG/COSPAR Working Group on Cartographic
+              Coordinates and Rotational Elements of the Planets and
+              Satellites: 1994," Celestial Mechanics and Dynamical
+              Astronomy, v.63, pp. 127-148.
+
+        [5]   Davies, M.E., Abalakin, V.K., Brahic, A., Bursa, M., 
+              Chovitz., B.H., Lieske, J.H., Seidelmann, P.K.,
+              Sinclair, A.T., and Tiuflin, I.S. (1992). "Report of the
+              IAU/IAG/COSPAR Working Group on Cartographic Coordinates
+              and Rotational Elements of the Planets and Satellites:
+              1991," Celestial Mechanics and Dynamical Astronomy,
+              v.53, no.4, pp. 377-397.
+
+        [6]   Davies, M.E., Abalakin, V.K., Bursa, M., Hunt, G.E.,
+              and Lieske, J.H. (1989). "Report of the IAU/IAG/COSPAR
+              Working Group on Cartographic Coordinates and Rotational
+              Elements of the Planets and Satellites: 1988," Celestial
+              Mechanics and Dynamical Astronomy, v.46, no.2, pp.
+              187-204.
+
+        [7]   Nautical Almanac Office, United States Naval Observatory
+              and H.M. Nautical Almanac Office, Rutherford Appleton
+              Laboratory (2005).  "The Astronomical Almanac for
+              the Year 2005," U.S. Government Printing Office,
+              Washington, D.C.: and The Stationary Office, London.
+
+        [8]   Nautical Almanac Office, United States Naval Observatory,
+              H.M. Nautical Almanac Office, Royal Greenwich
+              Observatory, Jet Propulsion Laboratory, Bureau des
+              Longitudes, and The Time Service and Astronomy
+              Departments, United States Naval Observatory (1992).
+              "Explanatory Supplement to the Astronomical Almanac," P.
+              Kenneth Seidelmann, ed. University Science Books, 20
+              Edgehill Road, Mill Valley, CA 9494.
+
+        [9]   Duxbury, Thomas C. (2001). "IAU/IAG 2000 Mars Cartographic
+              Conventions,"  presentation to the Mars Express Data
+              Archive Working Group, Dec. 14, 2001.
+
+        [10]  Russell, C.T. and Luhmann, J.G. (1990). "Earth: Magnetic 
+              Field and Magnetosphere." <http://www-ssc.igpp.ucla.
+              edu/personnel/russell/papers/earth_mag>.  Originally
+              published in "Encyclopedia of Planetary Sciences," J.H.
+              Shirley and R.W. Fainbridge, eds.  Chapman and Hall,
+              New York, pp 208-211.
+
+        [11]  Russell, C.T. (1971).  "Geophysical Coordinate 
+              Transformations," Cosmic Electrodynamics 2  184-186.
+              NAIF document 181.0.
+     
+        [12]  ESA/ESTEC Space Environment Information System (SPENVIS)
+              (2003). Web page:  "Dipole approximations of the
+              geomagnetic field."  <http://www.spenvis.oma.be/spenvis/
+              help/background/magfield/cd.html>.
+ 
+        [13]  International Association of Geomagnetism and Aeronomy
+              and International Union of Geodesy and Geophysics (2004).
+              Web page:  "The 9th Generation International Geomagnetic
+              Reference Field." <http://www.ngdc.noaa.gov/
+              IAGA/vmod/igrf.html>.
+
+        [14]  Duxbury, Thomas C. (1979).  "Planetary Geodetic Control 
+              Using Satellite Imaging," Journal of Geophysical Research, 
+              vol. 84, no. B3.  This paper is cataloged as NAIF
+              document 190.0.
+ 
+        [15]  Letter from Thomas C. Duxbury to Dr. Ephraim Lazeryevich
+              Akim, Keldish Institute of Applied Mathematics, USSR
+              Academy of Sciences, Moscow, USSR. This letter is
+              cataloged as NAIF document number 195.0.
+
+        [16]  "Placeholder" values were supplied by NAIF for some radii
+              of the bodies listed below:
+               
+                 Body      NAIF ID code 
+                 ----      ------------
+                 Metis     516
+                 Helene    612
+                 Larissa   807
+              
+              See the discussion below for further information.
+                             
+         
+     Most values are from [2].  All exceptions are 
+     commented where they occur in this file. The exceptions are:
+ 
+                 
+         --   Radii for the Sun are from [7].
+             
+         --   The second nutation precession angle (M2) for Mars is
+              represented by a quadratic polynomial in the 2000
+              IAU report. The SPICELIB subroutine BODEUL can not
+              handle this term (which is extremely small), so we
+              truncate the polynomial to a linear one.
+  
+         --   For several satellites, the 2000 IAU report either gives
+              a single radius value or a polar radius and a single
+              equatorial radius.  SPICE Toolkit software that uses body
+              radii expects to find three radii whenever these data are
+              read from the kernel pool.  In the cases listed below,
+              NAIF has used the mean radius value for all three radii.
+              Wherever this was done, the fact has been noted.
+              
+              The affected satellites are:
+              
+                 Body      NAIF ID code 
+                 ----      ------------
+                 Metis     516
+                 Helene    612
+                 Larissa   807
+         
+          --  Earth north geomagnetic centered dipole values are from
+              [12].  The article [10] was used to check most of 
+              these values, and the values were also re-computed from 
+              the 9th generation IGRF [13] by Nat Bachman.
+         
+          -- The Mars prime meridian offset angle is from [9].
+
+
+     "Old values" listed are from the SPICE P_constants file
+     dated April 24, 2000.  Most of these values came from the
+     1994 IAU report [4].
+ 
+ 
+ 
+ 
+Explanation
+--------------------------------------------------------
+
+     The SPICE Toolkit software that uses this file is documented in
+     the SPICE "Required Reading" file pck.req.  For a terse
+     description of the PCK file format, see the section below titled
+     "File Format."  See the SPICE "Required Reading" file kernel.req
+     for a detailed explanation of the SPICE text kernel file format.
+     The files pck.req and kernel.req are included in the documentation
+     provided with the SPICE Toolkit.
+
+     This file, which is logically part of the SPICE P-kernel, contains
+     constants used to model the orientation, size and shape of the
+     Sun, planets, and satellites. The orientation models express the
+     direction of the pole and location of the prime meridian of a body
+     as a function of time. The size/shape models ("shape models" for
+     short) represent all bodies as ellipsoids, using two equatorial
+     radii and a polar radius. Spheroids and spheres are obtained when
+     two or all three radii are equal.
+
+
+File Format
+
+     This file consists of a series of comment blocks and data blocks.
+     Comment blocks, which contain free-form descriptive or explanatory
+     text, are preceded by a \begintext token.  Data blocks follow a
+     \begindata token.  In order to be recognized, each token shown
+     here must be placed on a line by itself.
+
+     The portion of the file preceding the first data block is treated
+     as a comment block; it doesn't require an initial comment block
+     token.
+
+     This file identifies data using a series of
+
+        KEYWORD = VALUE
+
+     assignments.  The left hand side of each assignment is a
+     "kernel variable" name; the right hand side is an associated value
+     or list of values.  The SPICE subroutine API allows SPICE routines
+     and user applications to retrieve the set of values associated
+     with each kernel variable name.
+
+     Kernel variable names are case-sensitive and are limited to
+     32 characters in length.  
+
+     Numeric values may be integer or floating point.  String values
+     are normally limited to 80 characters in length; however, SPICE
+     provides a mechanism for identifying longer, "continued" strings.
+     See the SPICE routine STPOOL for details.
+
+     String values are single quoted.
+
+     When the right hand side of an assignment is a list of values,
+     the list items may be separated by commas or simply by blanks.
+     The list must be bracketed by parentheses.  Example:
+
+        BODY399_RADII = ( 6378.14 6378.14 6356.75 )
+ 
+     Any blanks preceding or following keyword names, values and equal
+     sign are ignored.
+  
+     Assignments may be spread over multiple lines, for example:
+
+        BODY399_RADII = ( 6378.14 
+                          6378.14 
+                          6356.75 )
+
+     This file may contain blank lines anywhere.  Non-printing
+     characters including TAB should not be present in the file: the
+     presence of such characters may make the file unreadable by
+     SPICE software.
+
+
+Time systems and reference frames
+
+     The 2000 IAU/IAG Working Group Report [1] states that, to the
+     accuracy of the formulas given, the time system used may be
+     regarded as any of TDB (Barycentric Dynamical Time), TT
+     (Terrestrial time, formerly called TDT), or T_eph (the independent
+     variable of the JPL planetary ephemerides).  Reference [2], from
+     which most data in this report were taken, erroneously identifies
+     the time system as TCB (Barycentric Coordinate Time).
+
+     SPICE software treats the time system used in this file as T_eph,
+     but for historical reasons SPICE documentation refers to the time
+     system as both "ET" and "TDB."  For consistency, documentation in
+     this version of the file retains use of the name TDB.
+
+     The origin of the time system is 2000 January 1 12:00:00 (TDB).
+     Throughout SPICE documentation and in this file, we use the names
+     "J2000 TDB" and "J2000" for this epoch.  The name "J2000.0" is
+     equivalent.
+ 
+     The inertial reference frame used for the rotational elements in
+     this file is identified by [1] as the ICRF (International
+     Celestial Reference Frame).  In this file, the frame is treated
+     as J2000. The difference between the J2000 frame and the ICRF is
+     on the order of tens of milliarcseconds and is well below the
+     accuracy level of the formulas in this file.
+
+Orientation models
+ 
+     All of the orientation models use three Euler angles to describe
+     body orientation. To be precise, the Euler angles describe the
+     orientation of the coordinate axes of the "Body Equator and Prime
+     Meridian" system with respect to an inertial system.  By default,
+     the inertial system is J2000 (also called "EME2000"), but other
+     frames can be specified in the file.  See the PCK Required Reading
+     for details.
+ 
+     The first two angles, in order, are the J2000 right ascension and
+     declination (henceforth RA and DEC) of the north pole of a body as
+     a function of time. The third angle is the prime meridian location
+     (represented by "W"), which is expressed as a rotation about the
+     north pole, and is also a function of time.
+ 
+     For the Sun and planets, the expressions for the north pole's
+     right ascension and declination, as well as prime meridian
+     location, are sums (as far as the models that appear in this file
+     are concerned) of quadratic polynomials and trigonometric
+     polynomials, where the independent variable is time. Some
+     coefficients may be zero.  Currently Neptune is the only planet
+     for which trigonometric polynomial terms are used.
+
+     In this file, the time arguments in expressions always refer to
+     Barycentric Dynamical Time (TDB), measured in centuries or days
+     past a reference epoch.  By default, the reference epoch is
+     the J2000 epoch, which is Julian ephemeris date 2451545.0, but
+     other epochs can be specified in the file.  See the PCK Required
+     Reading for details.
+ 
+     Example:  1991 IAU Model for orientation of the Earth.   Note that 
+     these values are used as an example only; see the data area below 
+     for current values.
+
+ 
+        alpha   =   0.00 - 0.641 T             ( RA )
+             0
+ 
+        delta   =  90.0  - 0.557 T             ( DEC )
+             0
+ 
+        W       =  190.16 + 360.9856235 d      ( Prime meridian )
+ 
+ 
+        T represents centuries past J2000 ( TDB ),
+ 
+        d represents days past J2000 ( TDB ).
+ 
+     In this file, the polynomials' coefficients above are assigned to the
+     symbols
+ 
+        BODY399_POLE_RA
+        BODY399_POLE_DEC
+        BODY399_POLE_PM
+ 
+     as follows:
+ 
+        BODY399_POLE_RA        = (    0.      -0.641         0. )
+        BODY399_POLE_DEC       = (   90.      -0.557         0. )
+        BODY399_PM             = (  190.16   360.9856235     0. )
+ 
+     Note the number "399"; this is the NAIF ID code for the Earth.
+ 
+     You'll see an additional symbol grouped with the ones listed here; it
+     is
+ 
+        BODY399_LONG_AXIS
+ 
+     This term is zero for all bodies except Mars. It represents the
+     angular offset between the meridian containing the longest axis of
+     the triaxial ellipsoid used to model a body and the prime meridian
+     of the body.
+
+     Expressions for satellites are a little more complicated; in addition
+     to polynomial terms, there are trigonometric terms. The arguments of
+     the trigonometric terms are linear polynomials. In this file, we call
+     the arguments of these trigonometric terms "nutation precession
+     angles."
+ 
+     In this file, the polynomial expressions for the nutation precession
+     angles are listed along with the planet's RA, DEC, and prime meridian
+     terms.
+ 
+     Example: 1991 IAU nutation precession angles for Earth.  Note that these
+     values are used as an example only; see the data area below for current 
+     values.
+ 
+        E1 = 125.045 -  0.052992 d
+        E2 = 250.090 -  0.105984 d
+        E3 = 260.008 + 13.012001 d
+        E4 = 176.625 + 13.340716 d
+        E5 = 357.529 +  0.985600 d
+ 
+        d represents days past J2000 ( TDB )
+ 
+     Because the SPICE Toolkit software expects the time units for the
+     angles to be CENTURIES (as in the IAU models for most bodies--the
+     Earth is an exception), the linear coefficients are scaled by 
+     36525.0 (days/century) in the assignments:
+ 
+        BODY3_NUT_PREC_ANGLES  = (  125.045    -1935.5328
+                                    250.090    -3871.0656
+                                    260.008   475263.336525
+                                    176.625   487269.6519
+                                    357.529    35999.04     )
+ 
+     As stated above, the satellite orientation models use polynomial and
+     trigonometric terms, where the arguments of the trigonometric terms
+     are the "nutation precession angles."
+ 
+     Example: 1988 IAU values for the Moon.  Again, these values are used 
+     as an example only; see the data area below for current values.
+ 
+ 
+        alpha   =  270.000  +  0.003 T  -  3.878 sin(E1) - 0.120 sin(E2)
+             0
+                                        +  0.070 sin(E3) - 0.017 sin(E4)  (RA)
+ 
+ 
+        delta   =  66.541   +  0.013 T  +  1.543 cos(E1) + 0.024 cos(E2)
+             0
+                                        -  0.028 cos(E3) + 0.007 cos(E4)  (DEC)
+ 
+ 
+        W       =  38.317   + 13.1763582 d    +  3.558 sin(E1)
+ 
+                                              +  0.121 sin(E2)
+ 
+                                              -  0.064 sin(E3)
+ 
+                                              +  0.016 sin(E4)
+ 
+                                              +  0.025 sin(E5)  ( Prime
+                                                                 meridian )
+ 
+        d represents days past J2000.
+ 
+        E1--E5 are the nutation precession angles.
+ 
+     The polynomial terms are assigned to symbols by the statements
+ 
+        BODY301_POLE_RA        = (  270.000    0.003        0. )
+        BODY301_POLE_DEC       = (   66.541    0.013        0. )
+        BODY301_PM             = (   38.317   13.1763582    0. )
+ 
+     The coefficients of the trigonometric terms are assigned to symbols by
+     the statements
+ 
+        BODY301_NUT_PREC_RA  = (  -3.878  -0.120   0.070  -0.017   0.    )
+        BODY301_NUT_PREC_DEC = (   1.543   0.024  -0.028   0.007   0.    )
+        BODY301_NUT_PREC_PM  = (   3.558   0.121  -0.064   0.016   0.025 )
+ 
+     Note that for the RA and PM (prime meridian) assignments, the ith term
+     is the coefficient of sin(Ei) in the expression used in the IAU model,
+     while for the DEC assignment, the ith term is the coefficient of
+     cos(Ei) in the expression used in the IAU model.
+ 
+     SPICE software expects the models for satellite orientation to
+     follow the form of the model shown here: the polynomial portions of the
+     RA, DEC, and W expressions are expected to be quadratic, the 
+     trigonometric terms for RA and W (satellite prime meridian) are expected 
+     to be linear combinations of sines of nutation precession angles, the 
+     trigonometric terms for DEC are expected to be linear combinations of 
+     cosines of nutation precession angles, and the polynomials for the 
+     nutation precession angles themselves are expected to be linear.
+ 
+     Eventually, the software will handle more complex expressions, we
+     expect.
+ 
+ 
+Shape models
+ 
+     There is only one kind of shape model supported by the SPICE Toolkit
+     software at present: the triaxial ellipsoid. The 2000 IAU report does
+     not use any other models, except in the case of Mars, where 
+     separate values are given for the north and south polar radii.
+ 
+     For each body, three radii are listed:  The first number is
+     the largest equatorial radius (the length of the semi-axis
+     containing the prime meridian), the second number is the smaller
+     equatorial radius, and the third is the polar radius.
+ 
+     Example: Radii of the Earth.
+ 
+        BODY399_RADII     = (     6378.14    6378.14      6356.75   )
+ 
+ 
+Body numbers and names
+--------------------------------------------------------
+ 
+ 
+        1  Mercury barycenter
+        2  Venus barycenter
+        3  Earth barycenter
+        4  Mars barycenter
+        5  Jupiter barycenter
+        6  Saturn barycenter
+        7  Uranus barycenter
+        8  Neptune barycenter
+        9  Pluto barycenter
+        10 Sun
+ 
+        While not relevant to the P_constants kernel, we note here for
+        completeness that 0 is used to represent the solar system
+        barycenter.
+ 
+        199 Mercury
+ 
+ 
+        299 Venus
+ 
+ 
+        399 Earth
+ 
+        301 Moon
+ 
+ 
+        499 Mars
+ 
+        401 Phobos      402 Deimos
+ 
+ 
+        599 Jupiter
+ 
+        501 Io          502 Europa      503 Ganymede    504 Callisto
+        505 Amalthea    506 Himalia     507 Elara       508 Pasiphae
+        509 Sinope      510 Lysithea    511 Carme       512 Ananke
+        513 Leda        514 Thebe       515 Adrastea    516 Metis
+ 
+ 
+        699 Saturn
+ 
+        601 Mimas       602 Enceladus   603 Tethys      604 Dione
+        605 Rhea        606 Titan       607 Hyperion    608 Iapetus
+        609 Phoebe      610 Janus       611 Epimetheus  612 Helene
+        613 Telesto     614 Calypso     615 Atlas       616 Prometheus
+        617 Pandora     618 Pan
+ 
+ 
+        799 Uranus
+ 
+        701 Ariel       702 Umbriel     703 Titania     704 Oberon
+        705 Miranda     706 Cordelia    707 Ophelia     708 Bianca
+        709 Cressida    710 Desdemona   711 Juliet      712 Portia
+        713 Rosalind    714 Belinda     715 Puck
+ 
+ 
+        899 Neptune
+ 
+        801 Triton      802 Nereid      803 Naiad       804 Thalassa
+        805 Despina     806 Galatea     807 Larissa     808 Proteus
+ 
+ 
+        999 Pluto
+ 
+        901 Charon
+ 
+ 
+        2000004 Asteroid Vesta
+        2000216 Asteroid Kleopatra
+        2000433 Asteroid Eros
+        2431010 Asteroid Ida
+        9511010 Asteroid Gaspra
+        
+ 
+Orientation constants for the Sun and planets
+--------------------------------------------------------
+ 
+ 
+Sun
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY10_POLE_RA         = (  286.13       0.          0. )
+        BODY10_POLE_DEC        = (   63.87       0.          0. )
+        BODY10_PM              = (   84.10      14.18440     0. )
+        BODY10_LONG_AXIS       = (    0.                        )
+
+        \begintext
+ 
+Mercury
+ 
+     Old values:
+ 
+        body199_pole_ra          = (  281.01,     -0.033,      0. )
+        body199_pole_dec         = (   61.45,     -0.005,      0. )
+        body199_pm               = (  329.55       6.1385025   0. )
+ 
+        body199_long_axis        = (    0.                        )
+
+
+     Current values:
+  
+        \begindata
+
+        BODY199_POLE_RA          = (  281.01     -0.033      0. )
+        BODY199_POLE_DEC         = (   61.45     -0.005      0. )
+        BODY199_PM               = (  329.548     6.1385025  0. )
+ 
+        BODY199_LONG_AXIS        = (    0.                        )
+ 
+        \begintext
+ 
+  
+Venus
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report. 
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY299_POLE_RA          = (  272.76       0.          0. )
+        BODY299_POLE_DEC         = (   67.16       0.          0. )
+        BODY299_PM               = (  160.20      -1.4813688   0. )
+ 
+        BODY299_LONG_AXIS        = (    0.                        )
+ 
+        \begintext
+
+
+Earth
+ 
+     Old values:
+ 
+        Values shown are from the 1994 IAU report [4].
+        
+           body399_pole_ra        = (    0.      -0.641         0. )
+           body399_pole_dec       = (   90.      -0.557         0. )
+           body399_pm             = (  190.16   360.9856235     0. )
+           body399_long_axis      = (    0.                        )
+ 
+        Nutation precession angles are unchanged in the 2000 report.
+ 
+ 
+     Current values:
+ 
+        \begindata 
+ 
+        BODY399_POLE_RA        = (    0.      -0.641         0. )
+        BODY399_POLE_DEC       = (   90.      -0.557         0. )
+        BODY399_PM             = (  190.147  360.9856235     0. )
+        BODY399_LONG_AXIS      = (    0.                        )
+
+        \begintext
+
+
+        Nutation precession angles for the Earth-Moon system:
+
+           The linear coefficients have been scaled up from degrees/day
+           to degrees/century, because the SPICELIB PCK reader expects
+           these units.  The original constants were:
+        
+                                    125.045D0   -0.0529921D0
+                                    250.089D0   -0.1059842D0
+                                    260.008D0   13.0120009D0
+                                    176.625D0   13.3407154D0
+                                    357.529D0    0.9856003D0
+                                    311.589D0   26.4057084D0
+                                    134.963D0   13.0649930D0
+                                    276.617D0    0.3287146D0
+                                     34.226D0    1.7484877D0
+                                     15.134D0   -0.1589763D0
+                                    119.743D0    0.0036096D0
+                                    239.961D0    0.1643573D0
+                                     25.053D0   12.9590088D0 
+
+
+        \begindata
+
+       
+        BODY3_NUT_PREC_ANGLES  = (  125.045         -1935.5364525000
+                                    250.089         -3871.0729050000
+                                    260.008        475263.3328725000  
+                                    176.625        487269.6299850000
+                                    357.529         35999.0509575000
+                                    311.589        964468.4993100000
+                                    134.963        477198.8693250000
+                                    276.617         12006.3007650000
+                                     34.226         63863.5132425000 
+                                     15.134         -5806.6093575000
+                                    119.743           131.8406400000
+                                    239.961          6003.1503825000 
+                                     25.053        473327.7964200000 )
+
+
+        \begintext
+ 
+
+     Earth north geomagnetic centered dipole:
+
+        Old values:
+
+           Values are from [11].  Note the year of publication was 1971.
+
+           body399_mag_north_pole_lon  =  ( -69.761 )
+           body399_mag_north_pole_lat  =  (  78.565 )
+
+
+        Current values:
+
+           The north dipole location is time-varying.  The values shown
+           below, taken from [12], represent a discrete sampling of the
+           north dipole location from 1945 to 2000. The terms DGRF and
+           IGRF refer to, respectively, "Definitive Geomagnetic
+           Reference Field" and "International Geomagnetic Reference
+           Field."  See references [10], [12], and [13] for details.
+
+           Coordinates are planetocentric. 
+
+             Data source    Lat      Lon
+             -----------   -----    ------
+              DGRF 1945    78.47    291.47
+              DGRF 1950    78.47    291.15
+              DGRF 1955    78.46    290.84
+              DGRF 1960    78.51    290.53
+              DGRF 1965    78.53    290.15
+              DGRF 1970    78.59    289.82
+              DGRF 1975    78.69    289.53
+              DGRF 1980    78.81    289.24 
+              DGRF 1985    78.97    289.10
+              DGRF 1990    79.13    288.89
+              IGRF 1995    79.30    288.59
+              IGRF 2000    79.54    288.43      
+
+
+        Values are given for the epoch 2000 and are from the final row
+        of the above table, which is from [12]. As shown by the table
+        these values constitute a low-accuracy approximation for epochs
+        not close to 2000.
+
+        \begindata
+       
+        BODY399_N_GEOMAG_CTR_DIPOLE_LON  =  ( 288.43 )
+        BODY399_N_GEOMAG_CTR_DIPOLE_LAT  =  (  79.54 )
+
+        \begintext
+
+ 
+Mars
+ 
+     Old values:
+ 
+        Values shown are from the 1994 IAU report [4].
+        
+           body499_pole_ra          = (  317.681     -0.108       0.  )
+           body499_pole_dec         = (   52.886     -0.061       0.  )
+           body499_pm               = (  176.901    350.8919830   0.  )
+
+        Nutation precession angles are unchanged in the 2000 IAU report.
+
+        Old lambda_a values were specified as POSITIVE WEST LONGITUDE.
+        Reference [14] gave the value
+
+           body499_long_axis        = (  110.  )
+ 
+        and reference [15] gave the value
+
+           body499_long_axis        = (  104.9194  )
+
+   
+     Current values:
+ 
+        \begindata
+ 
+        BODY499_POLE_RA          = (  317.68143   -0.1061      0.  )
+        BODY499_POLE_DEC         = (   52.88650   -0.0609      0.  )
+        BODY499_PM               = (  176.630    350.89198226  0.  )
+
+        \begintext
+ 
+        Source [9] specifies the following value for the lambda_a term
+        (BODY499_LONG_AXIS ) for Mars. This term is the POSITIVE EAST
+        LONGITUDE, measured from the prime meridian, of the meridian
+        containing the longest axis of the reference ellipsoid.
+        (CAUTION: previous values were POSITIVE WEST.)
+
+           body499_long_axis        = (  252.  )
+ 
+        We list this lambda_a value for completeness. The IAU report
+        [2] gives equal values for both equatorial radii, so the
+        lambda_a offset does not apply to the IAU model.
+ 
+        The 2000 IAU report defines M2, the second nutation precession angle,
+        by:
+ 
+                                                2
+           192.93  +  1128.4096700 d  +  8.864 T
+ 
+        We truncate the M2 series to a linear expression, because the PCK
+        software cannot handle the quadratic term.
+ 
+        Again, the linear terms are scaled by 36525.0:
+ 
+            -0.4357640000000000       -->     -15916.28010000000
+          1128.409670000000           -->   41215163.19675000
+            -1.8151000000000000E-02   -->       -662.9652750000000
+ 
+        We also introduce a fourth nutation precession angle, which
+        is the pi/2-complement of the third angle.  This angle is used
+        in computing the prime meridian location for Deimos.  See the
+        discussion of this angle below in the section containing orientation
+        constants for Deimos.
+ 
+        \begindata
+
+        BODY4_NUT_PREC_ANGLES  = (  169.51     -15916.2801
+                                    192.93   41215163.19675
+                                     53.47       -662.965275
+                                     36.53        662.965275  )
+ 
+        \begintext
+ 
+ 
+Jupiter
+ 
+     Old values:
+ 
+        body599_pole_ra        = (   268.05    -0.009      0.  )
+        body599_pole_dec       = (   +64.49    +0.003      0.  )
+        body599_pm             = (   284.95  +870.5366420  0.  )
+        body599_long_axis      = (     0.                      )
+ 
+        body5_nut_prec_angles  = (   73.32   +91472.9
+                                     24.62   +45137.2
+                                    283.90    +4850.7
+                                    355.80    +1191.3
+                                    119.90     +262.1
+                                    229.80      +64.3
+                                    352.25    +2382.6
+                                    113.35    +6070.0
+                                    146.64  +182945.8
+                                     49.24   +90274.4  )
+                 
+     Current values:
+ 
+        The number of nutation precession angles is ten. The ninth and
+        tenth are twice the first and second, respectively.
+ 
+        \begindata
+ 
+ 
+        BODY599_POLE_RA        = (   268.05      -0.009       0. )
+        BODY599_POLE_DEC       = (    64.49       0.003       0. )
+        BODY599_PM             = (   284.95     870.5366420   0. )
+        BODY599_LONG_AXIS      = (     0.                        )
+ 
+        BODY5_NUT_PREC_ANGLES  = (    73.32   91472.9
+                                      24.62   45137.2
+                                     283.90    4850.7
+                                     355.80    1191.3
+                                     119.90     262.1
+                                     229.80      64.3
+                                     352.35    2382.6
+                                     113.35    6070.0   
+                                     146.64  182945.8
+                                      49.24   90274.4  )
+        \begintext
+ 
+ 
+Saturn
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+
+     Current values:
+ 
+        \begindata
+
+        BODY699_POLE_RA        = (    40.589    -0.036      0.  )
+        BODY699_POLE_DEC       = (    83.537    -0.004      0.  )
+        BODY699_PM             = (    38.90    810.7939024  0.  )
+        BODY699_LONG_AXIS      = (     0.                       )
+ 
+       \begintext
+ 
+        The first seven angles given here are the angles S1 
+        through S7 from the 2000 report; the eighth and
+        ninth angles are 2*S1 and 2*S2, respectively.
+ 
+ 
+        \begindata
+
+        BODY6_NUT_PREC_ANGLES  = (  353.32   75706.7
+                                     28.72   75706.7  
+                                    177.40  -36505.5 
+                                    300.00   -7225.9 
+                                    316.45     506.2
+                                    345.20   -1016.3  
+                                     29.80     -52.1
+                                    706.64  151413.4
+                                     57.44  151413.4  )
+       \begintext
+ 
+ 
+Uranus
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY799_POLE_RA        = (  257.311     0.         0.  )
+        BODY799_POLE_DEC       = (  -15.175     0.         0.  )
+        BODY799_PM             = (  203.81   -501.1600928  0.  )
+        BODY799_LONG_AXIS      = (    0.                       )
+ 
+        \begintext
+        
+        The first 16 angles given here are the angles U1 
+        through U16 from the 2000 report; the 17th and
+        18th angles are 2*U11 and 2*U12, respectively.
+        
+        \begindata
+         
+        BODY7_NUT_PREC_ANGLES  = (  115.75   54991.87
+                                    141.69   41887.66
+                                    135.03   29927.35
+                                     61.77   25733.59  
+                                    249.32   24471.46
+                                     43.86   22278.41 
+                                     77.66   20289.42  
+                                    157.36   16652.76  
+                                    101.81   12872.63   
+                                    138.64    8061.81
+                                    102.23   -2024.22 
+                                    316.41    2863.96  
+                                    304.01     -51.94  
+                                    308.71     -93.17 
+                                    340.82     -75.32 
+                                    259.14    -504.81 
+                                    204.46   -4048.44
+                                    632.82    5727.92     )
+                                    
+        \begintext
+ 
+ 
+ 
+Neptune
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.  However,
+        the kernel variables used to store the values have changed.
+        See note immediately below. 
+ 
+     Current values:
+
+        The kernel variables 
+
+           BODY899_NUT_PREC_RA
+           BODY899_NUT_PREC_DEC
+           BODY899_NUT_PREC_PM
+ 
+        are new in this PCK version (dated October 17, 2003).  
+        These variables capture trigonometric terms in the expressions
+        for Neptune's pole direction and prime meridian location.
+        Version N0057 of the SPICE Toolkit uses these variables;
+        earlier versions can read them but ignore them when 
+        computing Neptune's orientation.
+
+           \begindata        
+ 
+           BODY899_POLE_RA        = (  299.36     0.         0. )
+           BODY899_POLE_DEC       = (   43.46     0.         0. )
+           BODY899_PM             = (  253.18   536.3128492  0. )
+           BODY899_LONG_AXIS      = (    0.                     )
+
+
+           BODY899_NUT_PREC_RA    = (  0.70 0. 0. 0. 0. 0. 0. 0. ) 
+           BODY899_NUT_PREC_DEC   = ( -0.51 0. 0. 0. 0. 0. 0. 0. )
+           BODY899_NUT_PREC_PM    = ( -0.48 0. 0. 0. 0. 0. 0. 0. )
+
+           \begintext
+ 
+           The 2000 report defines the nutation precession angles
+ 
+              N, N1, N2, ... , N7
+ 
+           and also uses the multiples of N1 and N7
+ 
+              2*N1
+ 
+           and
+ 
+              2*N7, 3*N7, ..., 9*N7
+ 
+           In this file, we treat the angles and their multiples as
+           separate angles.  In the kernel variable
+ 
+              BODY8_NUT_PREC_ANGLES
+ 
+           the order of the angles is
+ 
+              N, N1, N2, ... , N7, 2*N1, 2*N7, 3*N7, ..., 9*N7
+ 
+           Each angle is defined by a linear polynomial, so two
+           consecutive array elements are allocated for each
+           angle.  The first term of each pair is the constant term,
+           the second is the linear term.
+ 
+              \begindata 
+
+              BODY8_NUT_PREC_ANGLES = (   357.85         52.316
+                                          323.92      62606.6
+                                          220.51      55064.2 
+                                          354.27      46564.5
+                                           75.31      26109.4 
+                                           35.36      14325.4
+                                          142.61       2824.6  
+                                          177.85         52.316 
+                                          647.840    125213.200
+                                          355.700       104.632
+                                          533.550       156.948
+                                          711.400       209.264
+                                          889.250       261.580
+                                         1067.100       313.896
+                                         1244.950       366.212
+                                         1422.800       418.528
+                                         1600.650       470.844   )
+                                         
+               \begintext
+ 
+ 
+ 
+Pluto
+ 
+     Old values:
+ 
+         Values are unchanged in the 2000 IAU report. 
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY999_POLE_RA        = (  313.02    0.         0.   )
+        BODY999_POLE_DEC       = (    9.09    0.         0.   )
+        BODY999_PM             = (  236.77  -56.3623195  0.   )
+        BODY999_LONG_AXIS      = (    0.                     )
+
+       \begintext
+ 
+ 
+ 
+ 
+Orientation constants for the satellites
+--------------------------------------------------------
+ 
+ 
+Satellites of Earth
+ 
+     Old values:
+ 
+        Values are from the 1988 IAU report.
+        
+        body301_pole_ra        = (  270.000    0.           0. )
+        body301_pole_dec       = (   66.534    0.           0. )
+        body301_pm             = (   38.314   13.1763581    0. )
+        body301_long_axis      = (    0.                       )
+ 
+        body301_nut_prec_ra  = (  -3.878  -0.120   0.070  -0.017   0.    )
+        body301_nut_prec_dec = (   1.543   0.024  -0.028   0.007   0.    )
+        body301_nut_prec_pm  = (   3.558   0.121  -0.064   0.016   0.025 )
+ 
+        BODY301_POLE_RA      = (  269.9949    0.0031        0.        )
+        BODY301_POLE_DEC     = (   66.5392    0.0130        0.        )
+        BODY301_PM           = (   38.3213   13.17635815   -1.4D-12   )
+        BODY301_LONG_AXIS    = (    0.                                )
+   
+        BODY301_NUT_PREC_RA  = (  -3.8787   -0.1204   0.0700  -0.0172
+                                   0.        0.0072   0.       0.
+                                   0.       -0.0052   0.       0.
+                                   0.0043                             )
+        
+        BODY301_NUT_PREC_DEC = (   1.5419   0.0239   -0.0278   0.0068
+                                   0.      -0.0029    0.0009   0.
+                                   0.       0.0008    0.       0.
+                                  -0.0009                             )
+        
+        BODY301_NUT_PREC_PM  = (  3.5610    0.1208   -0.0642   0.0158
+                                  0.0252   -0.0066   -0.0047  -0.0046
+                                  0.0028    0.0052    0.0040   0.0019
+                                 -0.0044                              )
+ 
+     New values:
+ 
+        \begindata
+ 
+ 
+
+
+
+        BODY301_POLE_RA      = (  269.9949        0.0031        0.      )
+        BODY301_POLE_DEC     = (   66.5392        0.0130        0.      )
+        BODY301_PM           = (   38.3213       13.17635815   -1.4D-12 )
+        BODY301_LONG_AXIS    = (    0.                                  )
+   
+        BODY301_NUT_PREC_RA  = (   -3.8787   -0.1204   0.0700   -0.0172
+                                    0.0       0.0072   0.0       0.0
+                                    0.0      -0.0052   0.0       0.0
+                                    0.0043                              )
+        
+        BODY301_NUT_PREC_DEC = (   1.5419     0.0239  -0.0278    0.0068
+                                   0.0       -0.0029   0.0009    0.0
+                                   0.0        0.0008   0.0       0.0     
+                                  -0.0009                               )
+        
+        BODY301_NUT_PREC_PM  = (   3.5610     0.1208  -0.0642    0.0158
+                                   0.0252    -0.0066  -0.0047   -0.0046
+                                   0.0028     0.0052   0.0040    0.0019
+                                  -0.0044                               )
+       \begintext
+ 
+
+ 
+Satellites of Mars
+ 
+ 
+     Phobos
+ 
+          Old values:
+ 
+             Values are unchanged in the 2000 IAU report.
+ 
+          Current values:
+ 
+            The quadratic prime meridian term is scaled by 1/36525**2:
+ 
+               8.864000000000000   --->   6.6443009930565219E-09
+ 
+          \begindata
+ 
+          BODY401_POLE_RA  = ( 317.68    -0.108     0.                     )
+          BODY401_POLE_DEC = (  52.90    -0.061     0.                     )
+          BODY401_PM       = (  35.06  1128.8445850 6.6443009930565219E-09 )
+                                       
+          BODY401_LONG_AXIS     = (    0.         0. )
+ 
+          BODY401_NUT_PREC_RA   = (   1.79    0.    0.   0. )
+          BODY401_NUT_PREC_DEC  = (  -1.08    0.    0.   0. )
+          BODY401_NUT_PREC_PM   = (  -1.42   -0.78  0.   0. )
+
+
+         \begintext
+ 
+ 
+     Deimos
+ 
+        Old values:
+ 
+           Values are unchanged in the 2000 IAU report.
+ 
+ 
+        New values:
+ 
+           The Deimos prime meridian expression is:
+ 
+ 
+                                                     2
+              W = 79.41  +  285.1618970 d  -  0.520 T  -  2.58 sin M
+                                                                    3
+ 
+                                                       +  0.19 cos M .
+                                                                    3
+ 
+ 
+           At the present time, the PCK kernel software (the routine
+           BODEUL in particular) cannot handle the cosine term directly,
+           but we can represent it as
+ 
+              0.19 sin M
+                        4
+ 
+           where
+ 
+              M   =  90.D0 - M
+               4              3
+ 
+           Therefore, the nutation precession angle assignments for Phobos
+           and Deimos contain four coefficients rather than three.
+ 
+           The quadratic prime meridian term is scaled by 1/36525**2:
+ 
+              -0.5200000000000000  --->   -3.8978300049519307E-10
+ 
+           \begindata
+ 
+           BODY402_POLE_RA       = (  316.65     -0.108       0.           )
+           BODY402_POLE_DEC      = (   53.52     -0.061       0.           )
+           BODY402_PM            = (   79.41    285.1618970  -3.897830D-10 )
+           BODY402_LONG_AXIS     = (    0.                                 )
+ 
+           BODY402_NUT_PREC_RA   = (    0.   0.   2.98    0.   )
+           BODY402_NUT_PREC_DEC  = (    0.   0.  -1.78    0.   )
+           BODY402_NUT_PREC_PM   = (    0.   0.  -2.58    0.19 )
+
+          \begintext
+ 
+ 
+ 
+ 
+Satellites of Jupiter
+ 
+ 
+     Io
+ 
+          Old values:
+ 
+             Values are unchanged in the 2000 IAU report.
+ 
+          Current values:
+         
+        \begindata
+ 
+        BODY501_POLE_RA       = (  268.05          -0.009      0. )
+        BODY501_POLE_DEC      = (   64.50           0.003      0. )
+        BODY501_PM            = (  200.39         203.4889538  0. )
+        BODY501_LONG_AXIS     = (    0.                           )
+ 
+        BODY501_NUT_PREC_RA   = (    0.   0.     0.094    0.024   )
+        BODY501_NUT_PREC_DEC  = (    0.   0.     0.040    0.011   )
+        BODY501_NUT_PREC_PM   = (    0.   0.    -0.085   -0.022   )
+
+        \begintext
+ 
+ 
+ 
+     Europa
+ 
+ 
+        Old values:
+
+        body502_pole_ra       = (  268.08          -0.009      0.   )
+        body502_pole_dec      = (   64.51           0.003      0.   )
+        body502_pm            = (   35.67         101.3747235  0.   )
+        body502_long_axis     = (    0.                             )
+ 
+        body502_nut_prec_ra   = ( 0. 0. 0.   1.086   0.060   0.015   0.009 )
+        body502_nut_prec_dec  = ( 0. 0. 0.   0.468   0.026   0.007   0.002 )
+        body502_nut_prec_pm   = ( 0. 0. 0.  -0.980  -0.054  -0.014  -0.008 )
+        
+        Current values:
+ 
+        \begindata 
+ 
+        BODY502_POLE_RA       = (  268.08          -0.009      0.   )
+        BODY502_POLE_DEC      = (   64.51           0.003      0.   )
+        BODY502_PM            = (   36.022        101.3747235  0.   )
+        BODY502_LONG_AXIS     = (    0.                             )
+ 
+        BODY502_NUT_PREC_RA   = ( 0. 0. 0.   1.086   0.060   0.015   0.009 )
+        BODY502_NUT_PREC_DEC  = ( 0. 0. 0.   0.468   0.026   0.007   0.002 )
+        BODY502_NUT_PREC_PM   = ( 0. 0. 0.  -0.980  -0.054  -0.014  -0.008 )
+ 
+        \begintext
+ 
+ 
+     Ganymede
+ 
+        Old values:
+
+        body503_pole_ra       = (  268.20          -0.009      0.   )
+        body503_pole_dec      = (  +64.57          +0.003      0.   )
+        body503_pm            = (   44.04         +50.3176081  0.   )
+        body503_long_axis     = (    0.                             )
+ 
+        body503_nut_prec_ra   = ( 0. 0. 0.  -0.037  +0.431  +0.091   )
+        body503_nut_prec_dec  = ( 0. 0. 0.  -0.016  +0.186  +0.039   )
+        body503_nut_prec_pm   = ( 0. 0. 0.  +0.033  -0.389  -0.082   )
+        
+        Current values:
+        
+        \begindata
+    
+        BODY503_POLE_RA       = (  268.20         -0.009       0.  )
+        BODY503_POLE_DEC      = (   64.57          0.003       0.  )
+        BODY503_PM            = (   44.064        50.3176081   0.  )
+        BODY503_LONG_AXIS     = (    0.                            )
+
+        BODY503_NUT_PREC_RA   = ( 0. 0. 0.  -0.037   0.431   0.091   )
+        BODY503_NUT_PREC_DEC  = ( 0. 0. 0.  -0.016   0.186   0.039   )
+        BODY503_NUT_PREC_PM   = ( 0. 0. 0.   0.033  -0.389  -0.082   )
+ 
+        \begintext
+ 
+ 
+     Callisto
+ 
+ 
+        Old values:
+        
+        body504_pole_ra       = (   268.72   -0.009      0.  )
+        body504_pole_dec      = (   +64.83   +0.003      0.  )
+        body504_pm            = (   259.73  +21.5710715  0.  )
+        body504_long_axis     = (     0.                     )
+ 
+        body504_nut_prec_ra   = ( 0. 0. 0. 0. -0.068 +0.590  0. +0.010 )
+        body504_nut_prec_dec  = ( 0. 0. 0. 0. -0.029 +0.254  0. -0.004 )
+        body504_nut_prec_pm   = ( 0. 0. 0. 0. +0.061 -0.533  0. -0.009 )
+        
+        Current values:
+        
+        
+        \begindata
+  
+        BODY504_POLE_RA       = (   268.72    -0.009       0.  )
+        BODY504_POLE_DEC      = (    64.83     0.003       0.  )
+        BODY504_PM            = (   259.51    21.5710715   0.  )
+        BODY504_LONG_AXIS     = (     0.                       )
+ 
+        BODY504_NUT_PREC_RA   = ( 0. 0. 0. 0.  -0.068   0.590  0.   0.010 )
+        BODY504_NUT_PREC_DEC  = ( 0. 0. 0. 0.  -0.029   0.254  0.  -0.004 )
+        BODY504_NUT_PREC_PM   = ( 0. 0. 0. 0.   0.061  -0.533  0.  -0.009 )
+ 
+        \begintext
+ 
+ 
+     Amalthea
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report.        
+        
+        Current values:
+         
+        \begindata
+ 
+        BODY505_POLE_RA       = (   268.05    -0.009      0.  )
+        BODY505_POLE_DEC      = (    64.49     0.003      0.  )
+        BODY505_PM            = (   231.67   722.6314560  0.  )
+        BODY505_LONG_AXIS     = (     0.                      )
+ 
+        BODY505_NUT_PREC_RA  = ( -0.84  0. 0. 0. 0. 0. 0. 0.   0.01  0. )
+        BODY505_NUT_PREC_DEC = ( -0.36  0. 0. 0. 0. 0. 0. 0.   0.    0. )
+        BODY505_NUT_PREC_PM  = (  0.76  0. 0. 0. 0. 0. 0. 0.  -0.01  0. )
+ 
+        \begintext
+ 
+ 
+     Thebe
+ 
+ 
+        Old values:
+                
+           Values are unchanged in the 2000 IAU report.                
+          
+        Current values:
+        
+        \begindata
+ 
+        BODY514_POLE_RA       = (  268.05     -0.009       0.  )
+        BODY514_POLE_DEC      = (   64.49      0.003       0.  )
+        BODY514_PM            = (    8.56    533.7004100   0.  )
+        BODY514_LONG_AXIS     = (    0.                        )
+ 
+        BODY514_NUT_PREC_RA  = ( 0.  -2.11  0. 0. 0. 0. 0. 0. 0.  0.04 )
+        BODY514_NUT_PREC_DEC = ( 0.  -0.91  0. 0. 0. 0. 0. 0. 0.  0.01 )
+        BODY514_NUT_PREC_PM  = ( 0.   1.91  0. 0. 0. 0. 0. 0. 0. -0.04 )
+ 
+        \begintext
+ 
+ 
+     Adrastea
+ 
+        Old values:
+                
+           Values are unchanged in the 2000 IAU report.                
+        
+        Current values:
+        
+        \begindata
+ 
+ 
+ 
+        BODY515_POLE_RA       = (  268.05     -0.009       0.  )
+        BODY515_POLE_DEC      = (   64.49      0.003       0.  )
+        BODY515_PM            = (   33.29   1206.9986602   0.  )
+        BODY515_LONG_AXIS     = (    0.                        )
+
+        \begintext
+ 
+ 
+     Metis
+  
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report.  
+              
+        Current values:
+           
+        \begindata
+
+        BODY516_POLE_RA       = (  268.05     -0.009       0.  )
+        BODY516_POLE_DEC      = (   64.49      0.003       0.  )
+        BODY516_PM            = (  346.09   1221.2547301   0.  )
+        BODY516_LONG_AXIS     = (    0.                        )
+ 
+        \begintext
+ 
+ 
+ 
+Satellites of Saturn
+      
+     
+     Mimas
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report.  
+               
+        Current values:
+ 
+           \begindata
+  
+           BODY601_POLE_RA       = (   40.66     -0.036      0.  )
+           BODY601_POLE_DEC      = (   83.52     -0.004      0.  )
+           BODY601_PM            = (  337.46    381.9945550  0.  )
+           BODY601_LONG_AXIS     = (     0.                      )
+ 
+           BODY601_NUT_PREC_RA   = ( 0. 0.   13.56  0.    0.    0. 0. 0. 0. )
+           BODY601_NUT_PREC_DEC  = ( 0. 0.   -1.53  0.    0.    0. 0. 0. 0. )
+           BODY601_NUT_PREC_PM   = ( 0. 0.  -13.48  0.  -44.85  0. 0. 0. 0. )
+
+          \begintext
+ 
+ 
+     Enceladus
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report.  
+               
+        Current values:
+ 
+           \begindata
+ 
+           BODY602_POLE_RA       = (   40.66    -0.036       0. )
+           BODY602_POLE_DEC      = (   83.52    -0.004       0. )
+           BODY602_PM            = (    2.82   262.7318996   0. )
+           BODY602_LONG_AXIS     = (    0.                      )
+
+           \begintext
+ 
+ 
+ 
+     Tethys
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+ 
+        Current values:
+ 
+           \begindata
+ 
+           BODY603_POLE_RA       = (   40.66    -0.036       0. )
+           BODY603_POLE_DEC      = (   83.52    -0.004       0. )
+           BODY603_PM            = (   10.45   190.6979085   0. )
+           BODY603_LONG_AXIS     = (    0.                      )
+ 
+           BODY603_NUT_PREC_RA   = ( 0. 0. 0.   9.66   0.    0.  0.  0.  0. )
+           BODY603_NUT_PREC_DEC  = ( 0. 0. 0.  -1.09   0.    0.  0.  0.  0. )
+           BODY603_NUT_PREC_PM   = ( 0. 0. 0.  -9.60   2.23  0.  0.  0.  0. )
+
+           \begintext
+ 
+ 
+     Dione
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+ 
+        Current values:
+ 
+           \begindata
+   
+           BODY604_POLE_RA       = (  40.66      -0.036      0.  )
+           BODY604_POLE_DEC      = (  83.52      -0.004      0.  )
+           BODY604_PM            = (  357.00    131.5349316  0.  )
+           BODY604_LONG_AXIS     = (    0.                       )
+
+          \begintext
+ 
+ 
+ 
+     Rhea
+     
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+ 
+        Current values:
+ 
+           \begindata
+   
+           BODY605_POLE_RA       = (   40.38   -0.036       0. )
+           BODY605_POLE_DEC      = (   83.55   -0.004       0. )
+           BODY605_PM            = (  235.16   79.6900478   0. )
+           BODY605_LONG_AXIS     = (    0.                     )
+ 
+           BODY605_NUT_PREC_RA   = ( 0. 0. 0. 0. 0.   3.10   0. 0. 0. )
+           BODY605_NUT_PREC_DEC  = ( 0. 0. 0. 0. 0.  -0.35   0. 0. 0. )
+           BODY605_NUT_PREC_PM   = ( 0. 0. 0. 0. 0.  -3.08   0. 0. 0. )
+ 
+          \begintext
+ 
+ 
+ 
+     Titan
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY606_POLE_RA       = (    36.41   -0.036      0. )
+           BODY606_POLE_DEC      = (    83.94   -0.004      0. )
+           BODY606_PM            = (   189.64   22.5769768  0. )
+           BODY606_LONG_AXIS     = (     0.                    )
+ 
+           BODY606_NUT_PREC_RA   = ( 0. 0. 0. 0. 0. 0.  2.66  0. 0 )
+           BODY606_NUT_PREC_DEC  = ( 0. 0. 0. 0. 0. 0. -0.30  0. 0 )
+           BODY606_NUT_PREC_PM   = ( 0. 0. 0. 0. 0. 0. -2.64  0. 0 )
+
+           \begintext
+ 
+ 
+ 
+     Hyperion
+ 
+         The IAU report does not give an orientation model for Hyperion.
+         Hyperion's rotation is in chaotic and is not predictable for
+         long periods.
+
+ 
+     Iapetus
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY608_POLE_RA       = (   318.16  -3.949      0.  )
+           BODY608_POLE_DEC      = (    75.03  -1.143      0.  )
+           BODY608_PM            = (   350.20   4.5379572  0.  )
+           BODY608_LONG_AXIS     = (     0.                    )
+
+           \begintext
+ 
+ 
+ 
+     Phoebe
+ 
+
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata 
+  
+           BODY609_POLE_RA       = ( 355.00       0.         0.  )
+           BODY609_POLE_DEC      = (  68.70       0.         0.  )
+           BODY609_PM            = ( 304.70     930.8338720  0.  )
+           BODY609_LONG_AXIS     = (    0.                       )
+
+          \begintext
+ 
+ 
+     Janus
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+
+           BODY610_POLE_RA       = (  40.58    -0.036       0. )
+           BODY610_POLE_DEC      = (  83.52    -0.004       0. )
+           BODY610_PM            = (  58.83   518.2359876   0. )
+           BODY610_LONG_AXIS     = (   0.                      )
+ 
+           BODY610_NUT_PREC_RA   = ( 0. -1.623  0. 0. 0. 0. 0. 0.  0.023 )
+           BODY610_NUT_PREC_DEC  = ( 0. -0.183  0. 0. 0. 0. 0. 0.  0.001 )
+           BODY610_NUT_PREC_PM   = ( 0.  1.613  0. 0. 0. 0. 0. 0. -0.023 )
+ 
+           \begintext
+ 
+ 
+ 
+     Epimetheus
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+         
+        Current values:
+ 
+           \begindata 
+  
+           BODY611_POLE_RA       = (  40.58    -0.036        0. )
+           BODY611_POLE_DEC      = (  83.52    -0.004        0. )
+           BODY611_PM            = ( 293.87   518.4907239    0. )
+           BODY611_LONG_AXIS     = (   0.                       )
+ 
+           BODY611_NUT_PREC_RA   = ( -3.153   0. 0. 0. 0. 0. 0.   0.086  0. )
+           BODY611_NUT_PREC_DEC  = ( -0.356   0. 0. 0. 0. 0. 0.   0.005  0. )
+           BODY611_NUT_PREC_PM   = (  3.133   0. 0. 0. 0. 0. 0.  -0.086  0. )
+
+          \begintext
+ 
+ 
+ 
+     Helene
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata 
+ 
+           BODY612_POLE_RA       = (  40.85     -0.036        0. )
+           BODY612_POLE_DEC      = (  83.34     -0.004        0. )
+           BODY612_PM            = ( 245.12    131.6174056    0. )
+           BODY612_LONG_AXIS     = (   0.                        )
+
+           \begintext
+ 
+ 
+ 
+     Telesto
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata 
+ 
+           BODY613_POLE_RA       = ( 50.51    -0.036      0.  )
+           BODY613_POLE_DEC      = ( 84.06    -0.004      0.  )
+           BODY613_PM            = ( 56.88   190.6979332  0.  )
+           BODY613_LONG_AXIS     = (  0.                      )
+
+           \begintext
+
+ 
+ 
+     Calypso
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+  
+           BODY614_POLE_RA       = (   36.41    -0.036        0.  )
+           BODY614_POLE_DEC      = (   85.04    -0.004        0.  )
+           BODY614_PM            = (  153.51   190.6742373    0.  )
+           BODY614_LONG_AXIS     = (    0.                        )
+ 
+          \begintext
+ 
+ 
+ 
+     Atlas
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY615_POLE_RA       = (   40.58     -0.036      0. )
+           BODY615_POLE_DEC      = (   83.53     -0.004      0. )  
+           BODY615_PM            = (  137.88    598.3060000  0. )
+           BODY615_LONG_AXIS     = (    0.                      )
+
+           \begintext
+ 
+ 
+ 
+     Prometheus
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+  
+           BODY616_POLE_RA       = (  40.58      -0.036    )
+           BODY616_POLE_DEC      = (  83.53      -0.004    )
+           BODY616_PM            = ( 296.14     587.289000 )
+           BODY616_LONG_AXIS     = (   0.                  )
+ 
+           \begintext
+ 
+ 
+ 
+     Pandora
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY617_POLE_RA       = (   40.58     -0.036      0.  )
+           BODY617_POLE_DEC      = (   83.53     -0.004      0.  )
+           BODY617_PM            = (  162.92    572.7891000  0.  )
+           BODY617_LONG_AXIS     = (     0.                      )
+ 
+           \begintext
+ 
+ 
+ 
+     Pan
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY618_POLE_RA       = (   40.6     -0.036       0. )
+           BODY618_POLE_DEC      = (   83.5     -0.004       0. )
+           BODY618_PM            = (   48.8    626.0440000   0. )
+           BODY618_LONG_AXIS     = (    0.                      )
+
+           \begintext
+ 
+ 
+ 
+ 
+ 
+Satellites of Uranus
+ 
+  
+ 
+     Ariel
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+ 
+        Current values:
+
+           \begindata 
+
+           BODY701_POLE_RA       = ( 257.43     0.          0. )
+           BODY701_POLE_DEC      = ( -15.10     0.          0. )
+           BODY701_PM            = ( 156.22  -142.8356681   0. )
+           BODY701_LONG_AXIS     = (   0.                      )
+ 
+           BODY701_NUT_PREC_RA   = (  0. 0. 0. 0. 0.
+                                      0. 0. 0. 0. 0.  0.    0.    0.29 )
+ 
+           BODY701_NUT_PREC_DEC  = (  0. 0. 0. 0. 0.
+                                      0. 0. 0. 0. 0.  0.    0.    0.28 )
+ 
+           BODY701_NUT_PREC_PM   = (  0. 0. 0. 0. 0.
+                                      0. 0. 0. 0. 0.  0.   0.05   0.08 )
+           \begintext
+ 
+ 
+ 
+     Umbriel
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata 
+ 
+           BODY702_POLE_RA       = (  257.43     0.          0. )
+           BODY702_POLE_DEC      = (  -15.10     0.          0. )
+           BODY702_PM            = (  108.05   -86.8688923   0. )
+           BODY702_LONG_AXIS     = (    0.                      )
+ 
+           BODY702_NUT_PREC_RA   = ( 0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0.   0.   0.    0.   0.21 )
+ 
+           BODY702_NUT_PREC_DEC  = ( 0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0.   0.   0.    0.   0.20 )
+ 
+           BODY702_NUT_PREC_PM   = ( 0. 0. 0. 0. 0.  
+                                     0. 0. 0. 0. 0.   0.  -0.09  0.   0.06 )
+
+           \begintext
+ 
+ 
+ 
+     Titania
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY703_POLE_RA       = (  257.43    0.          0. )
+           BODY703_POLE_DEC      = (  -15.10    0.          0. )
+           BODY703_PM            = (   77.74  -41.3514316   0. )
+           BODY703_LONG_AXIS     = (    0.                     )
+ 
+           BODY703_NUT_PREC_RA   = ( 0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0.   0. 0. 0. 0.   0.29 )
+ 
+           BODY703_NUT_PREC_DEC  = ( 0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0.   0. 0. 0. 0.   0.28 )
+ 
+           BODY703_NUT_PREC_PM   = ( 0. 0. 0. 0. 0.  
+                                     0. 0. 0. 0. 0.   0. 0. 0. 0.   0.08 )
+           \begintext
+ 
+ 
+ 
+     Oberon
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+  
+           BODY704_POLE_RA       = (  257.43    0.          0. )
+           BODY704_POLE_DEC      = (  -15.10    0.          0. )
+           BODY704_PM            = (    6.77  -26.7394932   0. )
+           BODY704_LONG_AXIS     = (    0.                     )
+ 
+ 
+           BODY704_NUT_PREC_RA   = ( 0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0.   0.16 )
+ 
+           BODY704_NUT_PREC_DEC  = ( 0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0. 
+                                     0. 0. 0. 0. 0.   0.16 )
+ 
+           BODY704_NUT_PREC_PM   = ( 0. 0. 0. 0. 0.  
+                                     0. 0. 0. 0. 0.  
+                                     0. 0. 0. 0. 0.   0.04 )
+           \begintext
+ 
+ 
+ 
+     Miranda
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+
+           BODY705_POLE_RA      = (  257.43     0.         0. )
+           BODY705_POLE_DEC     = (  -15.08     0.         0. )
+           BODY705_PM           = (   30.70  -254.6906892  0. )
+           BODY705_LONG_AXIS    = (    0.                     )
+ 
+           BODY705_NUT_PREC_RA  = ( 0.     0.     0.    0.    0.  
+                                    0.     0.     0.    0.    0. 
+                                    4.41   0.     0.    0.    0. 
+                                    0.    -0.04   0.             )
+ 
+           BODY705_NUT_PREC_DEC = ( 0.     0.     0.    0.    0.  
+                                    0.     0.     0.    0.    0. 
+                                    4.25   0.     0.    0.    0. 
+                                    0.    -0.02   0.             )
+ 
+           BODY705_NUT_PREC_PM  = ( 0.     0.     0.    0.    0.  
+                                    0.     0.     0.    0.    0. 
+                                    1.15  -1.27   0.    0.    0.  
+                                    0.    -0.09   0.15           )
+           \begintext
+ 
+ 
+ 
+     Cordelia
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+  
+           BODY706_POLE_RA      = (   257.31      0.         0.  )
+           BODY706_POLE_DEC     = (   -15.18      0.         0.  )
+           BODY706_PM           = (   127.69  -1074.5205730  0.  )
+           BODY706_LONG_AXIS    = (     0.                       )
+ 
+           BODY706_NUT_PREC_RA  = (   -0.15    0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.             )
+
+           BODY706_NUT_PREC_DEC = (    0.14    0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.             )  
+
+           BODY706_NUT_PREC_PM  = (   -0.04    0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.             ) 
+ 
+           \begintext
+ 
+ 
+ 
+     Ophelia
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+   
+           BODY707_POLE_RA      = (  257.31     0.         0. )
+           BODY707_POLE_DEC     = (  -15.18     0.         0. )
+           BODY707_PM           = (  130.35  -956.4068150  0. )
+           BODY707_LONG_AXIS    = (    0.                     )
+ 
+           BODY707_NUT_PREC_RA  = (    0.     -0.09   0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.             )
+
+           BODY707_NUT_PREC_DEC = (    0.      0.09   0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.             )
+
+           BODY707_NUT_PREC_PM  = (    0.     -0.03   0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.    0.    0.
+                                       0.      0.     0.             )
+ 
+          \begintext
+ 
+ 
+ 
+     Bianca
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY708_POLE_RA      = (  257.31     0.         0.  )
+           BODY708_POLE_DEC     = (  -15.18     0.         0.  )
+           BODY708_PM           = (  105.46  -828.3914760  0.  )
+           BODY708_LONG_AXIS    = (    0.                      )
+ 
+           BODY708_NUT_PREC_RA  = (    0.      0.    -0.16    0.    0.
+                                       0.      0.     0.      0.    0.
+                                       0.      0.     0.      0.    0.
+                                       0.      0.     0.               )
+
+           BODY708_NUT_PREC_DEC = (    0.      0.     0.16    0.    0.
+                                       0.      0.     0.      0.    0.
+                                       0.      0.     0.      0.    0.
+                                       0.      0.     0.               )
+
+           BODY708_NUT_PREC_PM  = (    0.      0.    -0.04    0.    0.
+                                       0.      0.     0.      0.    0.
+                                       0.      0.     0.      0.    0.
+                                       0.      0.     0.               )
+
+          \begintext
+ 
+ 
+ 
+     Cressida
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+ 
+           BODY709_POLE_RA      = (  257.31      0.          0.  )
+           BODY709_POLE_DEC     = (  -15.18      0.          0.  )
+           BODY709_PM           = (   59.16   -776.5816320   0.  )
+           BODY709_LONG_AXIS    = (    0.                        )
+ 
+
+           BODY709_NUT_PREC_RA  = (    0.      0.     0.     -0.04   0.
+                                       0.      0.     0.      0.     0.
+                                       0.      0.     0.      0.     0.
+                                       0.      0.     0.                )
+
+
+           BODY709_NUT_PREC_DEC = (    0.      0.     0.      0.04   0.
+                                       0.      0.     0.      0.     0.
+                                       0.      0.     0.      0.     0.
+                                       0.      0.     0.                )
+
+
+           BODY709_NUT_PREC_PM  = (    0.      0.     0.     -0.01   0.
+                                       0.      0.     0.      0.     0.
+                                       0.      0.     0.      0.     0.
+                                       0.      0.     0.                )
+
+
+           \begintext
+ 
+ 
+ 
+     Desdemona
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata 
+  
+           BODY710_POLE_RA      = ( 257.31      0.           0.  )
+           BODY710_POLE_DEC     = ( -15.18      0.           0.  )
+           BODY710_PM           = (  95.08   -760.0531690    0.  )
+           BODY710_LONG_AXIS    = (   0.                         )
+ 
+           BODY710_NUT_PREC_RA  = (   0.      0.     0.      0.    -0.17 
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                  )
+
+           BODY710_NUT_PREC_DEC = (   0.      0.     0.      0.     0.16 
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                  )
+
+           BODY710_NUT_PREC_PM  = (   0.      0.     0.      0.    -0.04  
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                 )
+
+          \begintext
+ 
+ 
+ 
+     Juliet
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+  
+           BODY711_POLE_RA      = (  257.31     0.           0.   )
+           BODY711_POLE_DEC     = (  -15.18     0.           0.   )
+           BODY711_PM           = (  302.56  -730.1253660    0.   )
+           BODY711_LONG_AXIS    = (    0.                         )
+ 
+           BODY711_NUT_PREC_RA  = (   0.      0.     0.      0.     0.  
+                                     -0.06    0.     0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                 )
+ 
+           BODY711_NUT_PREC_DEC = (   0.      0.     0.      0.     0. 
+                                      0.06    0.     0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                 )
+  
+           BODY711_NUT_PREC_PM  = (   0.      0.     0.      0.     0. 
+                                     -0.02    0.     0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                 )
+ 
+           \begintext
+ 
+ 
+ 
+     Portia
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+    
+           BODY712_POLE_RA      = (  257.31      0.           0.   )
+           BODY712_POLE_DEC     = (  -15.18      0.           0.   )
+           BODY712_PM           = (   25.03   -701.4865870    0.   )
+           BODY712_LONG_AXIS    = (    0.                          )
+ 
+           BODY712_NUT_PREC_RA  = (   0.      0.     0.      0.     0. 
+                                      0.     -0.09   0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                )
+
+           BODY712_NUT_PREC_DEC = (   0.      0.     0.      0.     0. 
+                                      0.      0.09   0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.               )
+
+           BODY712_NUT_PREC_PM  = (   0.      0.     0.      0.     0. 
+                                      0.     -0.02   0.      0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.               )
+
+           \begintext
+ 
+ 
+ 
+     Rosalind
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+   
+           BODY713_POLE_RA      = ( 257.31      0.          0.  )
+           BODY713_POLE_DEC     = ( -15.18      0.          0.  )
+           BODY713_PM           = ( 314.90   -644.6311260   0.  )
+           BODY713_LONG_AXIS    = (   0.                        )
+ 
+           BODY713_NUT_PREC_RA  = (   0.      0.     0.      0.     0. 
+                                      0.      0.    -0.29    0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.               )
+
+           BODY713_NUT_PREC_DEC = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.28    0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.              )
+
+           BODY713_NUT_PREC_PM  = (   0.      0.     0.      0.     0. 
+                                      0.      0.    -0.08    0.     0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.              )
+ 
+           \begintext
+ 
+ 
+ 
+     Belinda
+ 
+       Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata 
+ 
+           BODY714_POLE_RA      = (   257.31      0.         0. )
+           BODY714_POLE_DEC     = (   -15.18      0.         0. )
+           BODY714_PM           = (   297.46   -577.3628170  0. )
+           BODY714_LONG_AXIS    = (     0.                      )
+ 
+           BODY714_NUT_PREC_RA  = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.     -0.03   0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                )
+
+           BODY714_NUT_PREC_DEC = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.      0.03   0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                )
+
+           BODY714_NUT_PREC_PM  = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.     -0.01   0.
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                )
+           \begintext
+ 
+ 
+ 
+     Puck
+ 
+       Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+  
+           BODY715_POLE_RA      = (  257.31      0.         0.  )
+           BODY715_POLE_DEC     = (  -15.18      0.         0.  )
+           BODY715_PM           = (   91.24   -472.5450690  0.  )
+           BODY715_LONG_AXIS    = (    0.                       )
+ 
+           BODY715_NUT_PREC_RA  = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.      0.    -0.33 
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                  )
+
+           BODY715_NUT_PREC_DEC = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.      0.     0.31
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                  )
+
+           BODY715_NUT_PREC_PM  = (   0.      0.     0.      0.     0. 
+                                      0.      0.     0.      0.    -0.09
+                                      0.      0.     0.      0.     0.
+                                      0.      0.     0.                  )
+  
+           \begintext
+ 
+ 
+ 
+ 
+Satellites of Neptune
+ 
+ 
+     Triton
+ 
+       Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+ 
+        Current values:
+ 
+           \begindata
+
+           BODY801_POLE_RA       = ( 299.36     0.         0.  )
+           BODY801_POLE_DEC      = (  41.17     0.         0.  )
+           BODY801_PM            = ( 296.53   -61.2572637  0.  )
+           BODY801_LONG_AXIS     = (   0.                      )
+ 
+ 
+           BODY801_NUT_PREC_RA   = (  0.      0.      0.      0.  
+                                      0.      0.      0.    -32.35    
+                                      0.     -6.28   -2.08   -0.74       
+                                     -0.28   -0.11   -0.07   -0.02    
+                                     -0.01                         )
+ 
+ 
+           BODY801_NUT_PREC_DEC  = (  0.      0.      0.      0.  
+                                      0.      0.      0.     22.55    
+                                      0.      2.10    0.55    0.16   
+                                      0.05    0.02    0.01    0.
+                                      0.                           )
+ 
+ 
+           BODY801_NUT_PREC_PM   = (  0.      0.      0.      0.  
+                                      0.      0.      0.     22.25   
+                                      0.      6.73    2.05    0.74   
+                                      0.28    0.11    0.05    0.02
+                                      0.01                         )
+  
+           \begintext
+ 
+ 
+ 
+ 
+     Nereid
+ 
+        Old values:
+ 
+           Values are from the 1988 IAU report.  Note that this 
+           rotation model pre-dated the 1989 Voyager 2 Neptune
+           encounter.
+
+ 
+           body802_pole_ra       = (    273.48    0.        0.  )
+           body802_pole_dec      = (     67.22    0.        0.  )
+           body802_pm            = (    237.22    0.9996465 0.  )
+           body802_long_axis     = (      0.                    )
+ 
+ 
+           The report seems to have a typo:  in the nut_prec_ra expression,
+           where the report gives  -0.51 sin 3N3, we use -0.51 3N2.
+ 
+           body802_nut_prec_ra   = (  0.    -17.81
+                                      0.      0.     0.      0.
+                                      0.      0.     0.
+                                      2.56   -0.51   0.11   -0.03  )
+ 
+           body802_nut_prec_dec  = (  0.     -6.67
+                                      0.      0.     0.      0.
+                                      0.      0.     0.
+                                      0.47   -0.07   0.01          )
+ 
+           body802_nut_prec_pm   = (  0.     16.48
+                                      0.      0.     0.      0.
+                                      0.      0.     0.
+                                     -2.57    0.51 -0.11    0.02  )
+ 
+ 
+ 
+        Current values:
+ 
+           The 2000 report [2] states that values for Nereid are not
+           given because Nereid is not in synchronous rotation with Neptune
+           (note (j), p.99).
+ 
+ 
+ 
+     Naiad
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+ 
+           \begindata
+  
+           BODY803_POLE_RA       = (  299.36      0.          0.  )
+           BODY803_POLE_DEC      = (   43.36      0.          0.  )
+           BODY803_PM            = (  254.06  +1222.8441209   0.  )
+           BODY803_LONG_AXIS     = (    0.                        )
+ 
+ 
+           BODY803_NUT_PREC_RA   = (    0.70     -6.49     0.      0.
+                                        0.        0.       0.      0.
+                                        0.25      0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                            )
+ 
+           BODY803_NUT_PREC_DEC  = (   -0.51     -4.75     0.      0.
+                                        0.        0.       0.      0.
+                                        0.09      0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                            )
+ 
+           BODY803_NUT_PREC_PM   = (   -0.48      4.40     0.      0.
+                                        0.        0.       0.      0.
+                                       -0.27      0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                            )
+    
+          \begintext
+ 
+ 
+ 
+ 
+     Thalassa
+ 
+
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+
+           BODY804_POLE_RA       = (  299.36      0.          0. )
+           BODY804_POLE_DEC      = (   43.45      0.          0. )
+           BODY804_PM            = (  102.06   1155.7555612   0. )  
+           BODY804_LONG_AXIS     = (    0.                       )
+ 
+ 
+           BODY804_NUT_PREC_RA   = (    0.70      0.      -0.28    0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             )
+   
+  
+           BODY804_NUT_PREC_DEC  = (   -0.51      0.      -0.21    0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0. 
+                                        0.                             )
+ 
+           BODY804_NUT_PREC_PM   = (   -0.48      0.       0.19    0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0. 
+                                        0.                             )
+                                                                 
+           \begintext
+ 
+ 
+ 
+     Despina
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+ 
+           \begindata
+  
+           BODY805_POLE_RA       = (  299.36      0.          0. )
+           BODY805_POLE_DEC      = (   43.45      0.          0. )
+           BODY805_PM            = (  306.51  +1075.7341562   0. )
+           BODY805_LONG_AXIS     = (    0.                       )
+ 
+ 
+           BODY805_NUT_PREC_RA   = (    0.70      0.       0.     -0.09
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                              )
+ 
+           BODY805_NUT_PREC_DEC  = (   -0.51      0.       0.     -0.07
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                              )
+ 
+           BODY805_NUT_PREC_PM   = (   -0.49      0.       0.      0.06
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                              )
+          \begintext
+ 
+ 
+ 
+     Galatea
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+ 
+           \begindata
+  
+           BODY806_POLE_RA       = (   299.36      0.          0. )
+           BODY806_POLE_DEC      = (    43.43      0.          0. )
+           BODY806_PM            = (   258.09    839.6597686   0. )
+           BODY806_LONG_AXIS     = (     0.                       )
+ 
+ 
+           BODY806_NUT_PREC_RA   = (    0.70      0.       0.      0.
+                                       -0.07      0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             )
+ 
+           BODY806_NUT_PREC_DEC  = (   -0.51      0.       0.      0.
+                                       -0.05      0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             )
+ 
+           BODY806_NUT_PREC_PM   = (   -0.48      0.       0.      0.
+                                        0.05      0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             ) 
+           \begintext
+
+ 
+     Larissa
+ 
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+  
+           \begindata
+
+           BODY807_POLE_RA       = (   299.36     0.           0. )
+           BODY807_POLE_DEC      = (    43.41     0.           0. )
+           BODY807_PM            = (   179.41  +649.0534470    0. )
+           BODY807_LONG_AXIS     = (     0.                       )
+ 
+ 
+           BODY807_NUT_PREC_RA   = (    0.70      0.       0.      0.
+                                        0.       -0.27     0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                            )
+ 
+           BODY807_NUT_PREC_DEC  = (   -0.51      0.       0.      0.
+                                        0.       -0.20     0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                            )
+ 
+           BODY807_NUT_PREC_PM   = (   -0.48      0.       0.      0.
+                                        0.        0.19     0.      0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                            )
+           \begintext
+ 
+ 
+ 
+     Proteus
+ 
+
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+
+           BODY808_POLE_RA       = (  299.27      0.          0.  )
+           BODY808_POLE_DEC      = (   42.91      0.          0.  )
+           BODY808_PM            = (   93.38   +320.7654228   0.  )
+           BODY808_LONG_AXIS     = (    0.                        )
+ 
+ 
+           BODY808_NUT_PREC_RA   = (    0.70      0.       0.      0.
+                                        0.        0.      -0.05    0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             )
+ 
+           BODY808_NUT_PREC_DEC  = (   -0.51      0.       0.      0.
+                                        0.        0.      -0.04    0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             )
+ 
+           BODY808_NUT_PREC_PM   = (   -0.48      0.       0.      0.
+                                        0.        0.       0.04    0.
+                                        0.        0.       0.      0.
+                                        0.        0.       0.      0.
+                                        0.                             )
+   
+           \begintext
+  
+ 
+ 
+ 
+ 
+Satellites of Pluto
+ 
+     Charon
+ 
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+               
+        Current values:
+ 
+           \begindata
+ 
+           BODY901_POLE_RA       = (   313.02     0.         0. )
+           BODY901_POLE_DEC      = (     9.09     0.         0. )
+           BODY901_PM            = (    56.77   -56.3623195  0. )
+           BODY901_LONG_AXIS     = (     0.                     )
+
+           \begintext
+ 
+ 
+ 
+Orientation constants for Asteroids Gaspra, Ida, Vesta, and Eros
+--------------------------------------------------------
+
+
+Gaspra
+
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+               
+        Current values:
+ 
+           \begindata 
+ 
+           BODY9511010_POLE_RA       = (   9.47     0.         0. )
+           BODY9511010_POLE_DEC      = (  26.70     0.         0. )
+           BODY9511010_PM            = (  83.67  1226.9114850  0. )
+           BODY9511010_LONG_AXIS     = (   0.                     )
+
+           \begintext
+
+
+Ida
+
+        Old values:
+        
+           Values are unchanged in the 2000 IAU report. 
+
+        Current values:
+ 
+           \begindata
+ 
+           BODY2431010_POLE_RA       = (  348.76      0.         0. )
+           BODY2431010_POLE_DEC      = (   87.12      0.         0. )
+           BODY2431010_PM            = (  265.95  -1864.6280070  0. )
+           BODY2431010_LONG_AXIS     = (    0.                      )
+ 
+           \begintext
+
+
+Vesta
+
+        Current values:
+ 
+           \begindata
+
+           BODY2000004_POLE_RA       = (   301.      0.         0.  )
+           BODY2000004_POLE_DEC      = (    41.      0.         0.  )
+           BODY2000004_PM            = (   292.   1617.332776   0.  )
+           BODY2000004_LONG_AXIS     = (     0.                     )
+ 
+           \begintext
+
+
+Eros
+
+        Current values:
+ 
+           \begindata
+
+           BODY2000433_POLE_RA       = (   11.35       0.           0. )
+           BODY2000433_POLE_DEC      = (   17.22       0.           0. )
+           BODY2000433_PM            = (  326.07    1639.38864745   0. )
+           BODY2000433_LONG_AXIS     = (    0.                         )
+ 
+           \begintext
+
+
+
+ 
+Radii of Sun and Planets
+--------------------------------------------------------
+ 
+ 
+Sun
+ 
+     Value for the Sun is from the [7], page K7.
+ 
+        \begindata
+ 
+        BODY10_RADII      = (   696000.     696000.      696000.     )
+ 
+        \begintext
+ 
+ 
+Mercury
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY199_RADII     = ( 2439.7   2439.7   2439.7 )
+ 
+        \begintext
+ 
+ 
+Venus
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY299_RADII     = ( 6051.8   6051.8   6051.8 )
+ 
+        \begintext
+ 
+ 
+Earth
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY399_RADII     = ( 6378.14   6378.14   6356.75 )
+ 
+        \begintext
+ 
+ 
+Mars
+ 
+ 
+     Old values:
+
+        body499_radii       = (     3397.      3397.         3375.     )
+ 
+     Current values:
+
+
+        The IAU report gives separate values for the north and south
+        polar radii:
+
+           north:  3373.19
+           south:  3379.21 
+
+        We use the average of these values as the polar radius for
+        the triaxial model.
+ 
+        \begindata
+ 
+        BODY499_RADII       = ( 3396.19   3396.19   3376.20 )
+ 
+        \begintext
+ 
+ 
+ 
+Jupiter
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY599_RADII     = ( 71492   71492   66854 )
+ 
+        \begintext
+ 
+ 
+ 
+Saturn
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY699_RADII     = ( 60268   60268   54364 )
+ 
+        \begintext
+ 
+ 
+ 
+Uranus
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY799_RADII     = ( 25559   25559   24973 )
+ 
+        \begintext
+ 
+ 
+ 
+Neptune
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+  
+     Current values:
+ 
+        (Values are for the 1 bar pressure level.)
+ 
+        \begindata
+ 
+        BODY899_RADII     = ( 24764   24764  24341 )
+ 
+        \begintext
+ 
+ 
+ 
+Pluto
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report.
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY999_RADII     = ( 1195   1195   1195 )
+ 
+        \begintext
+ 
+
+
+
+Radii of Satellites
+--------------------------------------------------------
+ 
+ 
+Moon
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report. 
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY301_RADII     = ( 1737.4   1737.4   1737.4 )
+ 
+        \begintext
+ 
+ 
+ 
+Satellites of Mars
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report. 
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY401_RADII     = ( 13.4    11.2    9.2 )
+        BODY402_RADII     = (  7.5     6.1    5.2 )
+ 
+        \begintext
+ 
+ 
+ 
+Satellites of Jupiter
+ 
+     Old values:
+ 
+        Old values for Io, Europa, Ganymede, Callisto and Amalthea.
+        These are from the 1997 IAU report.
+ 
+        body501_radii     = (     1826.       1815.        1812.     )
+        body502_radii     = (     1562.       1560.        1559.     )
+        body503_radii     = (     2635.       2633.        2633.     )
+        body504_radii     = (     2409.       2409.        2409.     )
+        body505_radii     = (      131.         73.          67.     )
+        body506_radii    = (  85      85      85   )
+        body507_radii    = (  40      40      40   )
+        body508_radii    = (  18      18      18   )
+        body509_radii    = (  14      14      14   )
+        body510_radii    = (  12      12      12   )
+        body511_radii    = (  15      15      15   )
+        body512_radii    = (  10      10      10   )
+        body513_radii    = (   5       5       5   )
+        body514_radii    = (  50      50      50   )
+        body515_radii    = (  13      10       8   )
+        body516_radii    = (  20      20      20   )
+         
+ 
+     Current values:
+         
+        \begindata
+ 
+        BODY501_RADII     = ( 1829.4   1819.3   1815.7  )
+        BODY502_RADII     = ( 1564.13  1561.23  1560.93 )
+        BODY503_RADII     = ( 2632.4   2632.29  2632.35 )
+        BODY504_RADII     = ( 2409.4   2409.2   2409.3  )
+        BODY505_RADII     = (  125       73       64    )
+ 
+        \begintext
+ 
+        Only mean radii are available in the 2000 IAU report for bodies
+        506-513.
+ 
+        \begindata
+ 
+        BODY506_RADII    = (    85       85       85   )
+        BODY507_RADII    = (    40       40       40   )
+        BODY508_RADII    = (    18       18       18   )
+        BODY509_RADII    = (    14       14       14   )
+        BODY510_RADII    = (    12       12       12   )
+        BODY511_RADII    = (    15       15       15   )
+        BODY512_RADII    = (    10       10       10   )
+        BODY513_RADII    = (     5        5        5   )
+        BODY514_RADII    = (    58       49       42   )
+        BODY515_RADII    = (    10        8        7   )
+ 
+        \begintext
+ 
+        The value for the second radius for body 516 is not given in 
+        2000 IAU report.   The values given are:
+ 
+           BODY516_RADII    = (  30   ---   20   )
+ 
+        For use within the SPICE system, we use only the mean radius.
+        \begindata
+ 
+        BODY516_RADII    = (  21.5   21.5  21.5  )
+ 
+        \begintext
+ 
+ 
+ 
+Satellites of Saturn
+ 
+ 
+     Old values:
+     
+        body601_radii     = (      210.3       197.4        192.6    )
+        body602_radii     = (      256.2       247.3        244.0    )
+        body603_radii     = (      535.6       528.2        525.8    )
+        body604_radii     = (      560.        560.         560.     )
+        body605_radii     = (      764.        764.         764.     )
+        body606_radii     = (     2575.       2575.        2575.     )
+        body607_radii     = (      180.        140.         112.5    )
+        body608_radii     = (      718.        718.         718.     )
+        body609_radii     = (      115.        110.         105.     )
+        body610_radii     = (       97.         95.          77.     )
+        body611_radii     = (       69.         55.          55.     )
+        body612_radii     = (       16          16           16      )
+        body613_radii     = (       15          12.5          7.5    )
+        body614_radii     = (       15           8            8      )
+        body615_radii     = (       18.5        17.2         13.5    )
+        body616_radii     = (       74          50           34      )
+        body617_radii     = (       55          44           31      )
+        body618_radii     = (       10          10           10      )
+      
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY601_RADII     = (  209.1   196.2   191.4 )
+        BODY602_RADII     = (  256.3   247.3   244.6 )
+        BODY603_RADII     = (  535.6   528.2   525.8 )
+        BODY604_RADII     = (  560     560     560   )
+        BODY605_RADII     = (  764     764     764   )
+        BODY606_RADII     = ( 2575    2575    2575   )
+        BODY607_RADII     = (  164     130     107   )
+        BODY608_RADII     = (  718     718     718   )
+        BODY609_RADII     = (  115     110     105   )
+        BODY610_RADII     = (   97.0    95.0    77.0 )
+        BODY611_RADII     = (   69.0    55.0    55.0 )
+ 
+        \begintext
+ 
+        Only the first equatorial radius for Helene (body 612) is given in the
+        2000 IAU report:
+ 
+            BODY612_RADII     = (       17.5        ---          ---     )
+ 
+        The mean radius is 16km; we use this radius for all three axes, as
+        we do for the satellites for which only the mean radius is available.
+ 
+ 
+        \begindata
+ 
+        BODY612_RADII     = (   16      16       16  )
+        BODY613_RADII     = (   15      12.5     7.5 )
+        BODY614_RADII     = (   15.0     8.0     8.0 )
+        BODY615_RADII     = (   18.5    17.2    13.5 )
+        BODY616_RADII     = (   74.0    50.0    34.0 )
+        BODY617_RADII     = (   55.0    44.0    31.0 )
+ 
+        \begintext
+ 
+ 
+         For Pan, only a mean radius is given in the 2000 report.
+ 
+        \begindata
+ 
+        BODY618_RADII     = (   10       10     10   )
+ 
+        \begintext
+ 
+ 
+ 
+Satellites of Uranus
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report. 
+ 
+     Current values:
+ 
+        \begindata
+ 
+        BODY701_RADII     = (  581.1   577.9   577.7 )
+        BODY702_RADII     = (  584.7   584.7   584.7 )
+        BODY703_RADII     = (  788.9   788.9   788.9 )
+        BODY704_RADII     = (  761.4   761.4   761.4 )
+        BODY705_RADII     = (  240.4   234.2   232.9 )
+ 
+        \begintext
+ 
+        The 2000 report gives only mean radii for satellites 706--715.
+ 
+        \begindata
+ 
+        BODY706_RADII     = (   13      13      13 )
+        BODY707_RADII     = (   15      15      15 )
+        BODY708_RADII     = (   21      21      21 )
+        BODY709_RADII     = (   31      31      31 )
+        BODY710_RADII     = (   27      27      27 )
+        BODY711_RADII     = (   42      42      42 )
+        BODY712_RADII     = (   54      54      54 )
+        BODY713_RADII     = (   27      27      27 )
+        BODY714_RADII     = (   33      33      33 )
+        BODY715_RADII     = (   77      77      77 )
+ 
+        \begintext
+ 
+ 
+ 
+ 
+Satellites of Neptune
+ 
+ 
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report. 
+ 
+     Current values:
+ 
+        The 2000 report gives mean radii only for bodies 801-806.
+ 
+        \begindata
+ 
+        BODY801_RADII     = ( 1352.6  1352.6  1352.6 )
+        BODY802_RADII     = (  170     170     170   )
+        BODY803_RADII     = (   29      29     29    )
+        BODY804_RADII     = (   40      40     40    )
+        BODY805_RADII     = (   74      74     74    )
+        BODY806_RADII     = (   79      79     79    )
+ 
+        \begintext
+ 
+ 
+        The second equatorial radius for Larissa is not given in the 2000
+        report.  The available values are:
+ 
+            BODY807_RADII     = (   104     ---     89   )
+ 
+        For use within the SPICE system, we use only the mean radius.
+        \begindata
+ 
+        BODY807_RADII     = (   96      96     96   )
+        BODY808_RADII     = (  218     208    201   )
+ 
+        \begintext
+ 
+ 
+ 
+ 
+Satellites of Pluto
+ 
+     
+     Old values:
+ 
+        Values are unchanged in the 2000 IAU report. 
+             
+     Current values:
+ 
+        \begindata
+ 
+        BODY901_RADII     = (  593     593    593   )
+ 
+        \begintext
+ 
+
+
+Radii of Selected Asteroids
+--------------------------------------------------------
+
+
+Gaspra
+
+     
+     Current values:
+ 
+ 
+        \begindata
+ 
+        BODY9511010_RADII     = (    9.1    5.2    4.4 )
+ 
+        \begintext
+
+        
+        
+        
+Ida
+
+     
+     Current values:
+ 
+ 
+        \begindata
+ 
+        BODY2431010_RADII     = (   26.8   12.0    7.6 )
+ 
+        \begintext
+
+        
+
+        
+Kleopatra
+
+     
+     Current values:
+ 
+ 
+        \begindata
+ 
+        BODY2000216_RADII     = (   108.5      47    40.5  )
+ 
+        \begintext
+
+
+        
+Eros
+ 
+     Current values:
+ 
+ 
+        \begindata
+ 
+        BODY2000433_RADII     = (  7.311  7.311  7.311  )
+ 
+        \begintext
+
+
+===========================================================================
+End of file pck00008.tpc
+===========================================================================
+
+
+
diff --git a/tests/pytests/data/isds/msl_isd.json b/tests/pytests/data/isds/msl_isd.json
new file mode 100644
index 0000000000000000000000000000000000000000..496fc0da7def7bf69ccdd64d15fe1e79ead75af9
--- /dev/null
+++ b/tests/pytests/data/isds/msl_isd.json
@@ -0,0 +1,309 @@
+{
+  "isis_camera_version": 1,
+  "image_lines": 1193,
+  "image_samples": 1338,
+  "name_platform": "MARS SCIENCE LABORATORY",
+  "name_sensor": "MAST CAMERA LEFT",
+  "reference_height": {
+    "maxheight": 1000,
+    "minheight": -1000,
+    "unit": "m"
+  },
+  "name_model": "USGS_ASTRO_FRAME_SENSOR_MODEL",
+  "center_ephemeris_time": 598494669.4412209,
+  "radii": {
+    "semimajor": 3396.19,
+    "semiminor": 3376.2,
+    "unit": "km"
+  },
+  "body_rotation": {
+    "time_dependent_frames": [
+      10014,
+      1
+    ],
+    "ck_table_start_time": 598494669.4412209,
+    "ck_table_end_time": 598494669.4412209,
+    "ck_table_original_size": 1,
+    "ephemeris_times": [
+      598494669.4412209
+    ],
+    "quaternions": [
+      [
+        -0.31921039676060065,
+        0.2937636389682398,
+        -0.12264933637077348,
+        0.8926168199781396
+      ]
+    ],
+    "angular_velocities": [
+      [
+        3.1623010827381965e-05,
+        -2.881378599775597e-05,
+        5.651578887273642e-05
+      ]
+    ],
+    "reference_frame": 1
+  },
+  "instrument_pointing": {
+    "time_dependent_frames": [
+      -76204,
+      -76203,
+      -76202,
+      -76201,
+      -76000,
+      -76910,
+      -76900,
+      10014,
+      1
+    ],
+    "ck_table_start_time": 598494669.4412209,
+    "ck_table_end_time": 598494669.4412209,
+    "ck_table_original_size": 1,
+    "ephemeris_times": [
+      598494669.4412209
+    ],
+    "quaternions": [
+      [
+        0.5220816838298279,
+        -0.21018675356622796,
+        -0.22520580724316586,
+        -0.7953204312845581
+      ]
+    ],
+    "angular_velocities": [
+      [
+        0.00023743002562463675,
+        -0.005620403629369784,
+        -0.003106243307946095
+      ]
+    ],
+    "reference_frame": 1,
+    "constant_frames": [
+      -76573,
+      -76205,
+      -76204
+    ],
+    "constant_rotation": [
+      0.41995474711084907,
+      0.9072597689641163,
+      -0.022753505185826722,
+      -0.7790017804603829,
+      0.3732225088642592,
+      0.5038463901990582,
+      0.4656116798563116,
+      -0.19386766232728606,
+      0.8634935396892888
+    ]
+  },
+  "naif_keywords": {
+    "BODY499_RADII": [
+      3396.19,
+      3396.19,
+      3376.2
+    ],
+    "BODY_FRAME_CODE": 10014,
+    "BODY_CODE": 499,
+    "FRAME_-76210_NAME": "MSL_MASTCAM_LEFT",
+    "INS-76210_CAHVOR_H": [
+      712.373106,
+      4664.465028,
+      33.182389
+    ],
+    "TKFRAME_-76210_UNITS": "DEGREES",
+    "INS-76210_IFOV_VERTICAL": 0.01230196,
+    "INS-76210_CAHVOR_O": [
+      0.999627,
+      0.026908,
+      0.004759
+    ],
+    "INS-76210_CAHVOR_R": [
+      -0.000151,
+      -0.139189,
+      -1.250336
+    ],
+    "INS-76210_CAHVOR_V": [
+      570.612488,
+      -14.279011,
+      4648.733195
+    ],
+    "INS-76210_CAHVOR_FILE": "MSL_CAL_003_SN_3003_FILTER_0_FOCUS_02315-MCAML-FLIGHT.cahvor",
+    "INS-76210_DISTORTION_PIXEL": [
+      837.77915717,
+      592.14046615
+    ],
+    "TKFRAME_-76210_AXES": [
+      2.0,
+      1.0,
+      3.0
+    ],
+    "TKFRAME_-76210_SPEC": "ANGLES",
+    "INS-76210_FOCAL_LENGTH": 34.0,
+    "INS-76210_CAHVOR_QUAT": [
+      1e-05,
+      -0.00325,
+      -0.00104,
+      0.99999
+    ],
+    "INS-76210_CAHVOR_POS": [
+      0.80436,
+      0.55942,
+      -1.90608
+    ],
+    "INS-76210_FOV_BOUNDARY": [
+      0.17483767,
+      0.12730492,
+      0.97633255,
+      -0.0,
+      0.12834274,
+      0.99172987,
+      -0.17476887,
+      0.12719345,
+      0.9763594,
+      -0.17553059
+    ],
+    "INS-76210_PIXEL_LINES": 1200.0,
+    "INS-76210_CAHVOR_MODEL": " CAHVOR",
+    "INS-76210_PIXEL_SIZE": 0.0074,
+    "INS-76210_CAHVOR_HC": 829.187822,
+    "INS-76210_IFOV_NOMINAL": 0.01247026,
+    "INS-76210_CAHVOR_HS": 4645.242086,
+    "INS-76210_BORESIGHT_PIXEL": [
+      829.18782212,
+      601.33514402
+    ],
+    "FRAME_-76210_CLASS_ID": -76210.0,
+    "INS-76210_FOV_CENTER_PIXEL": [
+      823.5,
+      599.5
+    ],
+    "INS-76210_FOV_CLASS_SPEC": "CORNERS",
+    "INS-76210_BORESIGHT": [
+      -0.0,
+      -0.0,
+      1.0
+    ],
+    "INS-76210_CAHVOR_THETA": -1.5710039999999998,
+    "INS-76210_IFOV": 0.01228988,
+    "TKFRAME_-76210_RELATIVE": "MSL_RSM_HEAD",
+    "FRAME_-76210_CLASS": 4.0,
+    "INS-76210_CAHVOR_DIMS": [
+      1648.0,
+      1200.0
+    ],
+    "INS-76210_FOV_SHAPE": "POLYGON",
+    "INS-76210_PIXEL_SAMPLES": 1648.0,
+    "INS-76210_IFOV_HORIZONTAL": 0.0122778,
+    "INS-76210_CAHVOR_VC": 601.335144,
+    "INS-76210_CAHVOR_VS": 4644.882626,
+    "TKFRAME_-76210_ANGLES": [
+      -90.01,
+      1.484,
+      89.655
+    ],
+    "FRAME_-76210_CENTER": -76.0,
+    "INS-76210_CAHVOR_A": [
+      0.999664,
+      0.025047,
+      0.006727
+    ],
+    "INS-76210_CAHVOR_C": [
+      0.767151,
+      0.433709,
+      -1.971648
+    ],
+    "INS-76210_FOV_FRAME": "MSL_MASTCAM_LEFT",
+    "BODY499_POLE_DEC": [
+      52.8865,
+      -0.0609,
+      0.0
+    ],
+    "BODY499_POLE_RA": [
+      317.68143,
+      -0.1061,
+      0.0
+    ],
+    "BODY499_PM": [
+      176.63,
+      350.89198226,
+      0.0
+    ]
+  },
+  "detector_sample_summing": 1,
+  "detector_line_summing": 1,
+  "focal_length_model": {
+    "focal_length": 34.0
+  },
+  "detector_center": {
+    "line": 576.4026068104001,
+    "sample": 680.1442422028802
+  },
+  "focal2pixel_lines": [
+    0,
+    0,
+    136.49886775101945
+  ],
+  "focal2pixel_samples": [
+    0,
+    -136.49886775101945,
+    0
+  ],
+  "optical_distortion": {
+    "cahvor": {
+      "coefficients": [
+        0,
+        0,
+        0,
+        0,
+        0
+      ]
+    }
+  },
+  "starting_detector_line": 0,
+  "starting_detector_sample": 0,
+  "instrument_position": {
+    "spk_table_start_time": 598494669.4412209,
+    "spk_table_end_time": 598494669.4412209,
+    "spk_table_original_size": 1,
+    "ephemeris_times": [
+      598494669.4412209
+    ],
+    "positions": [
+      [
+        -42.94908602840011,
+        -2878.1178384691016,
+        -1794.0007301446622
+      ]
+    ],
+    "velocities": [
+      [
+        0.2143509476698853,
+        0.054297300199827,
+        -0.09225670467004271
+      ]
+    ],
+    "reference_frame": 1
+  },
+  "sun_position": {
+    "spk_table_start_time": 598494669.4412209,
+    "spk_table_end_time": 598494669.4412209,
+    "spk_table_original_size": 1,
+    "ephemeris_times": [
+      598494669.4412209
+    ],
+    "positions": [
+      [
+        -178112289.0644448,
+        -111686023.67244285,
+        -46420243.18796099
+      ]
+    ],
+    "velocities": [
+      [
+        12.688344510456547,
+        -19.98128446099907,
+        -9.507348850576207
+      ]
+    ],
+    "reference_frame": 1
+  }
+}
\ No newline at end of file
diff --git a/tests/pytests/test_msl_drivers.py b/tests/pytests/test_msl_drivers.py
index 84fb73be88a97c7054234b7609cc0390cec52150..35900160ef85bc225a8fc6884d65b6bbd71be2ed 100644
--- a/tests/pytests/test_msl_drivers.py
+++ b/tests/pytests/test_msl_drivers.py
@@ -1,16 +1,40 @@
+import json
 import numpy as np
+import os
+import pytest
 import unittest
 
+import ale
+from conftest import get_image, get_image_label, get_isd, get_image_kernels, convert_kernels, compare_dicts
 from ale.drivers.msl_drivers import MslMastcamPds3NaifSpiceDriver
 
 from conftest import get_image_label
 from unittest.mock import PropertyMock, patch
 
+
+@pytest.fixture(scope='module')
+def test_mastcam_kernels():
+    kernels = get_image_kernels('2264ML0121141200805116C00_DRCL')
+    updated_kernels, binary_kernels = convert_kernels(kernels)
+    yield updated_kernels
+    for kern in binary_kernels:
+        os.remove(kern)
+
+def test_msl_mastcam_load(test_mastcam_kernels):
+    label_file = get_image_label('2264ML0121141200805116C00_DRCL', "pds3")
+    compare_dict = get_isd("msl")
+
+    isd_str = ale.loads(label_file, props={'kernels': test_mastcam_kernels})
+    isd_obj = json.loads(isd_str)
+    assert compare_dicts(isd_obj, compare_dict) == []
+
+
 class test_mastcam_pds_naif(unittest.TestCase):
     def setUp(self):
         label = get_image_label("1664MR0086340000802438C00_DRCL", "pds3")
         self.driver = MslMastcamPds3NaifSpiceDriver(label)
 
+
     def test_instrument_id(self):
         assert self.driver.instrument_id == "MSL_MASTCAM_RIGHT"