/*
 * call-seq:
 *      rd.decr(index[, number])     -> result
 *
 * Decrements the value referred to by the +index+ by +number+.
 * +number+ defaults to +1+ if unspecified.
 */
static VALUE decr(int argc, VALUE *argv, VALUE self)
{
        unsigned long nr = incr_decr_arg(argc, argv);

        return ULONG2NUM(__sync_sub_and_fetch(addr_of(self, argv[0]), nr));
}