# x k d

x, k, d = gets.split.map(&:to_i)

ans = 0
if x - (k-1)*d > 0
  ans = (x - k*d).abs
elsif x + (k-1)*d < 0
  ans = (x + k*d).abs
else
  if x > 0
    if (k - (x/d)).even?
      ans = (x - (x/d)*d).abs
    else
      ans = (x - ((x/d)+1)*d).abs
    end
  elsif x < 0
    if (k - (-x/d)).even?
      ans = (x + (-x/d)*d).abs
    else
      ans = (x + ((-x/d)+1)*d).abs
    end
  else # x == 0 
    if k.even?
      ans = 0
    else # k = odd
      ans = d
    end
  end
end

puts ans
