diff --git a/indra/llxml/llcontrol.cpp b/indra/llxml/llcontrol.cpp
index 7d49a8d3441e5f9d51f68d71790d58963c547eab..b83534a26b0870f6429b0ce8248300ff5fa16af1 100644
--- a/indra/llxml/llcontrol.cpp
+++ b/indra/llxml/llcontrol.cpp
@@ -315,7 +315,10 @@ void LLControlVariable::resetToDefault(bool fire_signal)
 		mValues.pop_back();
 	}
 	
-	if(fire_signal) 
+	// don't fire if the value didn't actually change
+	LLSD previous_value = getComparableValue(getValue());
+	bool value_changed = (llsd_compare(originalValue, previous_value) == FALSE);
+	if(fire_signal && value_changed)
 	{
 		firePropertyChanged(originalValue);
 	}