# Issue

*This Content is from Stack Overflow. Question asked by Arda *

Let’s say I have an integer like 588 and

I want to round that number up to 590

Or:

397 -> 400,

233 -> 230

…

Or maybe:

388 -> 400

77 -> 100

Does Kotlin has a function for these kind of situations? Or do I need to create my own algorithm for that?

# Solution

You’re doing arbitrary rounding, so no there’s nothing like that built in – only functions for rounding to the nearest integer in various ways.

You could write a basic rounding function like this:

```
fun Int.roundToClosest(step: Int): Int {
require(step > 0)
// in this case 'lower' meaning 'closer to zero'
val lower = this - (this % step)
val upper = lower + if (this >= 0) step else -step
return if (this - lower < upper - this) lower else upper
}
println(-5.roundToClosest(10))
>> -10
```

In this case it "rounds up" away from zero, so for negative numbers it increases their magnitude instead of rounding up towards positive infinity. If you want `ceil`

behaviour (rounding to positive infinity) I’ll leave that as an exercise for the reader!

This Question was asked in StackOverflow by Arda and Answered by cactustictacs It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.