diff --git a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs
index 8a94096..a088691 100644
--- a/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs
+++ b/Meade.net.Telescope.UnitTests/TelescopeUnitTests.cs
@@ -2783,6 +2783,8 @@ namespace Meade.net.Telescope.UnitTests
[TestCase(DriveRates.driveSidereal, "+60.1")]
[TestCase(DriveRates.driveSolar, "+60.0")]
[TestCase(DriveRates.driveLunar, "+57.9")]
+ [TestCase(DriveRates.driveLunar, "57.3")]
+ [TestCase(DriveRates.driveLunar, "58.9")]
public void TrackingRate_Get_WhenConnected_ThenSendsCommandToTelescope(DriveRates rate, string trackingRate)
{
_siderealTrackingRate = trackingRate;
diff --git a/Meade.net.Telescope/Meade.net.Telescope.csproj b/Meade.net.Telescope/Meade.net.Telescope.csproj
index a884ce0..f51673b 100644
--- a/Meade.net.Telescope/Meade.net.Telescope.csproj
+++ b/Meade.net.Telescope/Meade.net.Telescope.csproj
@@ -128,6 +128,7 @@
+
@@ -187,6 +188,7 @@
Meade.net
+
diff --git a/Meade.net.Telescope/Telescope.cs b/Meade.net.Telescope/Telescope.cs
index e7aae54..e417173 100644
--- a/Meade.net.Telescope/Telescope.cs
+++ b/Meade.net.Telescope/Telescope.cs
@@ -2643,25 +2643,20 @@ namespace ASCOM.Meade.net
rate = rate.Replace("+", string.Empty);
+ var rateDouble = double.Parse(rate);
+
DriveRates result;
- switch (rate)
- {
- case "60.1":
- result = DriveRates.driveSidereal;
- break;
- case "60.0":
- result = DriveRates.driveSolar;
- break;
- case "57.9":
- result = DriveRates.driveLunar;
- break;
- default:
- result = DriveRates.driveKing;
- //If this is ever returned it is representing a fail condition.
- break;
- }
-
+ if (rateDouble.Equals(60.1))
+ result = DriveRates.driveSidereal;
+ else if (rateDouble.Equals(60.0))
+ result = DriveRates.driveSolar;
+ else if (rateDouble.Between(57.3, 58.9))
+ result = DriveRates.driveLunar;
+ else
+ //If this is ever returned it is representing a fail condition.
+ //result = DriveRates.driveKing;
+ throw new ASCOM.InvalidValueException($"{rate} is not a supported tracking rate for meade mounts");
LogMessage("TrackingRate Get", $"{rate} {result}");