[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) › take

```ts
function take(
  n: Int0To100OrNonNegativeInt,
): <Output, Input>(
  schedule: Schedule<Output, Input>,
) => Schedule<Output, Input>;
```

Defined in: [packages/common/src/Schedule.ts:781](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Schedule.ts#L781)

Limits a schedule to a maximum number of steps.

After `n` steps, returns `Err(Done<void>)` (stop).

`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 a schedule

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

// Three exponential retries, then Done.
const step = take(3)(exponential("100ms"))(testCreateDeps());
step(undefined);
step(undefined);
step(undefined);
assertErr(step(undefined), done());
```