 					}
 					
 					// save value in cache
-					_equationResultCache[key] = value;
+					_equationResultCache.set(key, dataType, value);
 					//trace('('+equation.value+')@"'+key+'" = '+value);
 				}
 				else if (value === UNDEFINED)

			if (!_equationIsConstant)
			{
				// check the cache
				value = _equationResultCache[key];
				// define cached value if missing
				if (value === undefined)
				{
					// prevent recursion caused by compiledEquation
					_equationResultCache[key] = UNDEFINED;
					
					// prepare EquationColumnLib static parameter before calling the compiled equation
					EquationColumnLib.currentRecordKey = key;

	import weave.core.LinkableString;
	import weave.core.UntypedLinkableVariable;
	import weave.utils.ColumnUtils;
	import weave.utils.Dictionary2D;
	import weave.utils.EquationColumnLib;
	
	/**
