[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Schedule](https://evolu.dev/docs/api-reference/common/Schedule) › recurs

```ts
function recurs(n: Int0To100OrNonNegativeInt): Schedule<number>;
```

Defined in: [packages/common/src/Schedule.ts:222](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Schedule.ts#L222)

A schedule that recurs a fixed number of times.

Convenience for `take(n)(forever)`. Outputs the current repetition count (0,
1, 2, ..., n-1).

`n` uses [Int0To100OrNonNegativeInt](https://evolu.dev/docs/api-reference/common/Number/type-aliases/Int0To100OrNonNegativeInt): pass `0` to `100` as a literal, or
a validated [NonNegativeInt](https://evolu.dev/docs/api-reference/common/Type/variables/NonNegativeInt) for larger or dynamic values.

### Limiting recurrence count

```ts
import {
  assertErr,
  assertOk,
  done,
  recurs,
  testCreateDeps,
} from "@evolu/common";

// Retry up to 3 times (4 total attempts including the initial operation).
const retry = recurs(3);
const step = retry(testCreateDeps());
assertOk(step(undefined), [0, 0]);
step(undefined);
step(undefined);
assertErr(step(undefined), done());
```