Скорее всего, это вызвано тем, что вычисление выполняется для целых чисел, что дает целочисленный результат. Попробуйте вместо этого использовать двойные значения.
РЕДАКТИРОВАТЬ: Я только что проверил, и это именно то, что происходит. Если вы измените свой расчет на: NSTimeInterval paymentTermsInMilliSeconds = 30.0 * 24.0 * 60.0 * 60.0 * 1000.0;
, тогда код даст правильное значение "2592000000". В противном случае вы получите переполнение и результат «-1702967296».