public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    var fmt = new NumberFormatInfo();
    fmt.NegativeSign = "-";

    var percentage = ((double)value);

    Debug.WriteLine(percentage);

    var allParams = ((string)parameter).Split((';'));
    var factor = Double.Parse(allParams[0], fmt);
    var min = Double.Parse(allParams[1]);
    var max = Double.Parse(allParams[2]);
    var reverse = bool.Parse(allParams[3]);
    var delayUntilPercentage = Double.Parse(allParams[4]);

    if (percentage == 0) return min;

    if (delayUntilPercentage > 0 && percentage < delayUntilPercentage) return min;

    percentage = percentage - delayUntilPercentage;

    if(reverse)
    {
        percentage = 1 - (percentage * factor);
        return (percentage * max);
    }
    else
    {
        return (percentage * max) * factor;
    }
}