try {
check(Permission.MODIFY, series);
policy.willDelete(series, t);
policy.deleteValue(series, t);
Surrogate s = series.getSurrogate();
DBObject obj = getObject(s, true);
// force sparse, so it's always possible to repair when there are excessive gaps
TimeAddressable<Double> values = TimeSeriesFactory.make(series.getTimeDomain(), Double.class, true);
extractValues(obj, null, values);
if (values.getRange().isInRange(t)) {