diff --git a/src/Fug.cpp b/src/Fug.cpp
index fed09d093257351d3c8f446c9a10b51250514eff..5fc8e2074c0bdcff1d07ceb665efd976fbfdb9d5 100644
--- a/src/Fug.cpp
+++ b/src/Fug.cpp
@@ -402,10 +402,10 @@ void Fug::read_MaxDiffVoltage(Tango::Attribute &attr) {
       << "Fug::read_MaxDiffVoltage(Tango::Attribute &attr) entering... "
       << endl;
 
-  if (*attr_MaxDiffVoltage_read == -1) {
+  if (*attr_MaxDiffVoltage_read < -1*MAX_RETRY) {
     Tango::Except::throw_exception(
         static_cast<const char *>("Error reading max diff voltage"),
-        static_cast<const char *>("Buffer not ready"),
+        static_cast<const char *>("Error reading max voltage"),
         static_cast<const char *>("Fug::read_MaxDiffVoltage"), Tango::ERR);
   }
 
diff --git a/src/Fug.h b/src/Fug.h
index 55ed007c0715d5ea78b3d7fc4f56f79ec2ffbc9c..ca2293d9477e269d4f503676968ffc86bcb3ecb5 100644
--- a/src/Fug.h
+++ b/src/Fug.h
@@ -36,6 +36,7 @@
 #define FUG_SER_TOUT 150 //ms.
 #define FUG_SER_SLEEP 80 //ms.
 #define FUG_MSG_LEN 80
+#define MAX_RETRY 50
 
 #define FUG_MAX_DIFF_BUFFER 1000
 
diff --git a/src/fugthread.cpp b/src/fugthread.cpp
index 4da9b7ccf099542f074423e8ea2fe0fd633f855e..661830c3b8b13b6fb44892d731ab755016326da4 100644
--- a/src/fugthread.cpp
+++ b/src/fugthread.cpp
@@ -206,7 +206,10 @@ int fugthread::MaxVoltageDiff(void)
 			*myfug->attr_MaxDiffVoltage_read = max_tmp_diff;
 		}
 		else {
-			*myfug->attr_MaxDiffVoltage_read = -1; /* invalid value */
+			if (*myfug->attr_MaxDiffVoltage_read < 0) 
+				*myfug->attr_MaxDiffVoltage_read--;
+			else
+				*myfug->attr_MaxDiffVoltage_read = -1; /* invalid value */
 		}
 
 		myfug->fug_buf_idx++;
@@ -216,7 +219,10 @@ int fugthread::MaxVoltageDiff(void)
 		
 	}
 	else {
-		*myfug->attr_MaxDiffVoltage_read = -1; /* invalid value */
+		if (*myfug->attr_MaxDiffVoltage_read < 0) 
+			*myfug->attr_MaxDiffVoltage_read--;
+		else
+			*myfug->attr_MaxDiffVoltage_read = -1; /* invalid value */
 	}
 		
 	return 0;