How does this look?

```
- (BOOL)getObjectValue:(id)anObject forString:(CPString)aString errorDescription:(CPString)anError
{
    // allows an empty string to pass without validation
    if (aString === @"")
        return YES;

    var value = [self numberFromString:aString],
        error = @"";

    // this will return false if we've received anything but a number, most likely NaN
    if (!isFinite(num)):
        error = @"Value is not a number";
    else if (_minimum !== nil && num < _minimum)
        error = @"Value is less than the minimum allowed value";
    else if (_maximum !== nil && value > _maximum)
        error = @"Value is greater than the maximum allowed value";

    if (error)
        AT_DEREF(anError, error);
        return NO;

    AT_DEREF(anObject, value);

    return YES;
}
```

This way it will return NO if there is an error. I do need a bit of advice on the proper place to put `AT_DEREF(anObject, value)` however -- should it be de-referenced even if there is an error condition, or only if all the tests pass successfully?