There is a fair bit of literature out there for people's means of tackling the issue (eg
http://brentgreenwood.blogspot.com.au/2011/12/slowly-changing-facts.html )
The approach you take is very much driven by business requirements (or typically, which requirements they'd like to prioritise highest).
For example, some options (driven by requirements) can include:
1) the history (ie, 'old' version of the fact row) is stored elsewhere, because its needed for compliance, but the core requirement is seeing the current data and interpreting it as "it was always that way". If people want to see "point in time" then they use the separate history table.
2) the snapshot concept, the facts are stored as they currently are every day. I've never seen this work well, because the fact table grows exponentially
3) the start/end concept as you've outlined above - the fundamental challenge with that is if you want *edit* old data, it means it gets a lot harder to manage, but you might never get to archive or retire old data, because of the "just in case" issue, ie, an update comes through months or years after the first instance of a fact is recorded. Similarly, physical implementation options (compression, read-only, etc) become more limited.
Still, even with that considered, there are still with variations of that, once again depending on requirements, eg using your case of:
march 1st => march 10th, fact1, count=100
march 10th => (current), fact1, count=80
I've seen options such as:
i) just as above, it becomes the job of the query write to ensure they don't (for example) arrive at a count of 180 etc.
ii) additional columns to reflect different time-based views, eg
march 1st => march 10th, fact1, count=100,delta=100
march 10th => (current), fact1, count=80,delta=-20
so queries can sum *all* of the records (for delta) prior to that of a requested point in time, rather than have to hunt for something marked as 'current'
iii) artificial correctional rows (finance people often like this, because it matches their thinking of ledger style operations, eg)
march 1st => march 10th, fact1, count=100
march 10th => (current), fact1, count=-100
march 10th => (current), fact1, count=80
once again, the benefit being summation across all rows
Which is best for you ? Only you can decide on that. Once you're into "scf" territory, everything is basically some sort of compromise between performance, complexity and manageability...just like most things :-)
Hope this helps.