Formula field calculating on date is returning wrong result

I built my Sprint space using Fibery’s template. The “Status” field is a formula field that looks at the dates:

If(

  Dates.End(false) < Today(),

  "Past",

  If(

    Dates.Start() <= Today() and Dates.End(false) >= Today(),

    "Current",

    "Future"

  )

)

An example:

  1. Sprint End date is 2/17/2026
  2. Today is 2/18/2026
  3. Sprint Status still shows Current

So, whenever my Sprint End date is Yesterday, my sprint is still showing as “Current” – which is leading to 2 active sprints at the same time & making it confusing for my team looking at “Current Sprint Board”.
If I change the End Date to 2 days ago (2/16/2026), then the status updates to “Past”

Is this an issue with the formula? Something to do with UTC conversion? Something else entirely? Help appreciated!

Exactly! Dates are stored UTC on the backend, and the Today() function runs every day at 00:00 UTC. Its quite annoying to people who are far off of UTC. It can solved using the new Periods Integration, since you can input your timezone there, and have it update every hour. Its a bit more complex to set up though with auto-linking… Maybe someone else has a simpler solution.

I think the issue actually relates to how date ranges are stored:

Timezones are not relevant if you are not using a datetime field:

No. Dates are stored as dates.
Datetimes are stored in UTC on the backend

1 Like

Ah yeah, whoops.

Don’t you think it still has to do with timezones? As in, if a user is in gmt-12, and has a formula that returns Today(), for 12 hours the date will be different to the date the user is actually in, no? Today() is based on UTC right?

I think similar to this discussion: Date out by a whole day

1 Like

You’re right that my answer was glossing over the fact that the value of Today() changes at midnight UTC,
but since

I assumed that this meant that the value of Today() had been confirmed as being 2/18/2026, but you’re absolutely right that @christamae may not have meant that, and may be writing the message in a timezone where Today() was not yet equal to today’s date(!)

Thanks for clarifying that.

1 Like

Thanks, this actually helped, I think – I removed the “false” from my formula & things seem to be behaving as I expect.

This is because .End(false) returns the end date as stored internally ( = value shown on UI + 1 )

For clarification, I work in CST time zone (UTC -06:00). I’m hoping this solution holds when we start our next sprint (next Weds) :folded_hands:

In that case, there is a possibility that the result will not be what you expect during the time period between 6pm and midnight every day (your time) during which Fibery thinks that tomorrow has already arrived.