 +       {
 +           int errNo = atoi(answer.substr(2).c_str());
 +           ret = ERR_OFFSET + errNo;
++           SLEEP(SLEEP_TIME);
 +           continue;
 +       }
 +       else {
 +           ret = ERR_UNRECOGNIZED_ANSWER;
 +       }
++       SLEEP(SLEEP_TIME);
     }
 -   else if (answer.substr(0, 1).compare("E") == 0 && answer.length() > 2)
 -   {

+       {
+           int errNo = atoi(answer.substr(2).c_str());
+           ret = ERR_OFFSET + errNo;
+           continue;
+       }
+       else {
+           ret = ERR_UNRECOGNIZED_ANSWER;   
+       }
    }
-   else if (answer.substr(0, 1).compare("E") == 0 && answer.length() > 2)
-   {

===================================================================
--- DeviceAdapters/Prior/Prior.cpp	(revision 15982)
+++ DeviceAdapters/Prior/Prior.cpp	(working copy)
@@ -33,6 +33,15 @@
 #include "../../MMDevice/ModuleInterface.h"
 #include <sstream>
 
+#ifdef _WIN32
+#include <Windows.h>
+#define SLEEP(t) (Sleep(t))
+#else
+#include <unistd.h>
+#define SLEEP(t) (usleep(t)*1000)
+#endif
+#define SLEEP_TIME 500
+
 const char* g_XYStageDeviceName = "XYStage";
 const char* g_ZStageDeviceName = "ZStage";
 const char* g_NanoStageDeviceName = "NanoScanZ";
@@ -970,7 +979,7 @@
 
    return false;
 }
- 
+
 int XYStage::SetPositionSteps(long x, long y)
 {
    MMThreadGuard guard(lock_);
@@ -984,27 +993,40 @@
    command << "G," << x << "," << y;
 
    // send command
