A couple boring housekeeping items.
A couple boring housekeeping items.

--- a/VOID.csproj
+++ b/VOID.csproj
@@ -58,6 +58,7 @@
     <Compile Include="VOID_DataLogger.cs" />
     <Compile Include="VOID_EditorCore.cs" />
     <Compile Include="VOID_EditorHUD.cs" />
+    <Compile Include="IntCollection.cs" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="Assembly-CSharp">

--- a/VOID_Module.cs
+++ b/VOID_Module.cs
@@ -131,15 +131,22 @@
 				object fieldValue = field.GetValue(this);
 
 				bool convertBack = false;
+				bool isIntCollection = false;
 				if (fieldValue is IVOID_SaveValue)
 				{
+					if (fieldValue is IntCollection) {
+						isIntCollection = true;
+					}
 					fieldValue = (fieldValue as IVOID_SaveValue).AsType;
 					convertBack = true;
 				}
 
 				fieldValue = config.GetValue(fieldName, fieldValue);
 
-				if (convertBack)
+				if (isIntCollection) {
+					fieldValue = new IntCollection (4, (long)fieldValue);
+				}
+				else if (convertBack)
 				{
 					Type type = typeof(VOID_SaveValue<>).MakeGenericType (fieldValue.GetType ());
 					IVOID_SaveValue convertValue = Activator.CreateInstance (type) as IVOID_SaveValue;

--- a/VOID_Orbital.cs
+++ b/VOID_Orbital.cs
@@ -29,6 +29,9 @@
 		[AVOID_SaveValue("toggleExtended")]
 		protected VOID_SaveValue<bool> toggleExtended = false;
 
+		[AVOID_SaveValue("precisionValues")]
+		protected IntCollection precisionValues = new IntCollection(4, 230584300921369395);
+
 		public VOID_Orbital()
 		{
 			this._Name = "Orbital Information";
@@ -42,6 +45,7 @@
 			// Toadicus edit: added local sidereal longitude.
 			double LSL = vessel.longitude + vessel.orbit.referenceBody.rotationAngle;
 			LSL = Tools.FixDegreeDomain (LSL);
+			int idx = 0;
 
             GUILayout.BeginVertical();
 
@@ -52,28 +56,48 @@
 
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 			GUILayout.Label(VOIDLabels.void_altitude_asl + ":");
-			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.altitude) + "m", GUILayout.ExpandWidth(false));
+			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.altitude, this.precisionValues [idx]) + "m", GUILayout.ExpandWidth(false));
+			GUILayout.FlexibleSpace ();
+			if (GUILayout.Button ("P")) {
+				this.precisionValues [idx] = (ushort)((this.precisionValues[idx] + 3) % 15);
+			}
             GUILayout.EndHorizontal();
+			idx++;
 
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 			GUILayout.Label(VOIDLabels.void_velocity + ":");
-			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.vel.magnitude) + "m/s", GUILayout.ExpandWidth(false));
+			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.vel.magnitude, this.precisionValues [idx]) + "m/s", GUILayout.ExpandWidth(false));
+			GUILayout.FlexibleSpace ();
+			if (GUILayout.Button ("P")) {
+				this.precisionValues [idx] = (ushort)((this.precisionValues[idx] + 3) % 15);
+			}
             GUILayout.EndHorizontal();
+			idx++;
 
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 			GUILayout.Label(VOIDLabels.void_apoapsis + ":");
-			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.ApA) + "m", GUILayout.ExpandWidth(false));
+			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.ApA, this.precisionValues [idx]) + "m", GUILayout.ExpandWidth(false));
+			GUILayout.FlexibleSpace ();
+			if (GUILayout.Button ("P")) {
+				this.precisionValues [idx] = (ushort)((this.precisionValues[idx] + 3) % 15);
+			}
             GUILayout.EndHorizontal();
+			idx++;
 
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
             GUILayout.Label("Time to Ap:");
-            GUILayout.Label(Tools.ConvertInterval(vessel.orbit.timeToAp), GUILayout.ExpandWidth(false));
+			GUILayout.Label(Tools.ConvertInterval(vessel.orbit.timeToAp), GUILayout.ExpandWidth(false));
             GUILayout.EndHorizontal();
 
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 			GUILayout.Label(VOIDLabels.void_periapsis + ":");
-			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.PeA) + "m", GUILayout.ExpandWidth(false));
+			GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.PeA, this.precisionValues [idx]) + "m", GUILayout.ExpandWidth(false));
+			GUILayout.FlexibleSpace ();
+			if (GUILayout.Button ("P")) {
+				this.precisionValues [idx] = (ushort)((this.precisionValues[idx] + 3) % 15);
+			}
             GUILayout.EndHorizontal();
+			idx++;
 
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
             GUILayout.Label("Time to Pe:");
@@ -89,8 +113,13 @@
             double g_vessel = (VOID_Core.Constant_G * vessel.mainBody.Mass) / Math.Pow(r_vessel, 2);
             GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
             GUILayout.Label("Gravity:");
-			GUILayout.Label(Tools.MuMech_ToSI(g_vessel) + "m/s²", GUILayout.ExpandWidth(false));
+			GUILayout.Label(Tools.MuMech_ToSI(g_vessel, this.precisionValues[idx]) + "m/s²", GUILayout.ExpandWidth(false));
+			GUILayout.FlexibleSpace ();
+			if (GUILayout.Button ("P")) {
+				this.precisionValues [idx] = (ushort)((this.precisionValues[idx] + 3) % 15);
+			}
             GUILayout.EndHorizontal();
+			idx++;
 
 			this.toggleExtended = GUILayout.Toggle(this.toggleExtended, "Extended info");
 
@@ -103,8 +132,13 @@
 
                 GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
                 GUILayout.Label("Semi-major axis:");
-                GUILayout.Label((vessel.orbit.semiMajorAxis / 1000).ToString("##,#") + "km", GUILayout.ExpandWidth(false));
+				GUILayout.Label(Tools.MuMech_ToSI(vessel.orbit.semiMajorAxis, this.precisionValues [idx]) + "m", GUILayout.ExpandWidth(false));
+				GUILayout.FlexibleSpace ();
+				if (GUILayout.Button ("P")) {
+					this.precisionValues [idx] = (ushort)((this.precisionValues[idx] + 3) % 15);
+				}
                 GUILayout.EndHorizontal();
+				idx++;
 
                 GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
                 GUILayout.Label("Eccentricity:");
@@ -119,7 +153,7 @@
 
                 GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
                 GUILayout.Label("True anomaly:");
-                GUILayout.Label(vessel.orbit.trueAnomaly.ToString("F3") + "°", GUILayout.ExpandWidth(false));
+				GUILayout.Label(vessel.orbit.trueAnomaly.ToString("F3") + "°", GUILayout.ExpandWidth(false));
                 GUILayout.EndHorizontal();
 
 				// Toadicus edit: convert eccentric anomaly into degrees.

--- a/VOID_SaveValue.cs
+++ b/VOID_SaveValue.cs
@@ -69,7 +69,7 @@
 
 		public static implicit operator T(VOID_SaveValue<T> v)
 		{
-			return v.value;
+			return (T)v.value;
 		}
 
 		public static implicit operator VOID_SaveValue<T>(T v)
@@ -91,7 +91,7 @@
 			return r;
 		}
 
-		public new string ToString()
+		public override string ToString()
 		{
 			return this.value.ToString();
 		}