Objective-C token bucket rate limiter in plain C

Objective-C
#import <Foundation/Foundation.h>
#import <math.h>

typedef struct {
    double capacity;
    double tokens;
    double rate;
    NSTimeInterval last;
} TokenBucket;
static void BucketInit(TokenBucket *b, double capacity, double rate) {
    b->capacity = capacity; b->tokens = capacity; b->rate = rate;
    b->last = [NSDate date].timeIntervalSince1970;
}

static BOOL BucketTake(TokenBucket *b, double amount) {
    NSTimeInterval now = [NSDate date].timeIntervalSince1970;
    b->tokens = fmin(b->capacity, b->tokens + (now - b->last) * b->rate);
    b->last = now;
    if (b->tokens < amount) return NO;
    b->tokens -= amount;
    return YES;
}