void setValue( Source[] sources, HashMap sourceIndex, ValueFormatter vFormat ) throws RrdException
	{
		try
		{
			double value 	= sources[ ((Integer) sourceIndex.get(sourceName)).intValue() ].getAggregate( aggregate );
						
			// See if we need to use a specific value for the formatting
			double oldBase	= vFormat.getBase();
			if ( baseValue != -1 && baseValue != vFormat.getBase() )
				vFormat.setBase( baseValue );
			
			vFormat.setFormat( value, numDec, strLen );
			vFormat.setScaling( normalScale, uniformScale );
			
			String valueStr = vFormat.getFormattedValue();
			String prefix	= vFormat.getPrefix();

			// Create a copy of the token/pair list
			parsedList		= new ArrayList( oList );

			// Replace all values
			for (int i = 0; i < oList.size(); i += 2 )
			{
				String str = (String) oList.get(i);
				
				str = str.replaceAll(VALUE_MARKER, valueStr);
				if ( normalScale ) str = str.replaceAll(SCALE_MARKER, prefix);
				if ( uniformScale ) str = str.replaceAll(UNIFORM_SCALE_MARKER, prefix);
				
				parsedList.set( i, str );
			}
			
			// Reset the base value of the formatter
			if ( baseValue != -1 )
				vFormat.setBase( oldBase );
		}
		catch (Exception e) {
			throw new RrdException( "Could not find datasource: " + sourceName );
		}
	}