@@ -997,26 +997,22 @@ impl<L: Deref<Target = u64>, BRT: Deref<Target = HistoricalBucketRangeTracker>,
997
997
}
998
998
999
999
fn decayed_offset_msat ( & self , offset_msat : u64 ) -> u64 {
1000
- let elapsed_time = self . now . duration_since ( * self . last_updated ) . as_secs ( ) ;
1001
1000
let half_life = self . params . liquidity_offset_half_life . as_secs ( ) ;
1002
-
1003
- match elapsed_time. checked_div ( half_life) {
1004
- None => 0 ,
1005
- Some ( decays) => match elapsed_time. checked_div ( half_life / 2 ) {
1006
- None => 0 ,
1007
- Some ( half_decays) => {
1008
- // Decay the offset by the appropriate number of half lives. If half of the next
1009
- // half life has passed, approximate an additional three-quarter life by summing
1010
- // the results of taking both the *next two* half lives instead. This helps
1011
- // smooth out the decay.
1012
- let decayed_offset_msat = offset_msat. checked_shr ( decays as u32 ) . unwrap_or ( 0 ) ;
1013
- if half_decays % 2 == 0 {
1014
- decayed_offset_msat
1015
- } else {
1016
- ( decayed_offset_msat >> 1 ) + ( decayed_offset_msat >> 2 )
1017
- }
1018
- }
1019
- } ,
1001
+ if half_life == 0 {
1002
+ 0
1003
+ } else {
1004
+ // Decay the offset by the appropriate number of half lives. If half of the next half
1005
+ // life has passed, approximate an additional three-quarter life by summing the results
1006
+ // of taking both the *next two* half lives instead. This helps smooth out the decay.
1007
+ let elapsed_time = self . now . duration_since ( * self . last_updated ) . as_secs ( ) ;
1008
+ let half_decays = elapsed_time / ( half_life / 2 ) ;
1009
+ let decays = half_decays / 2 ;
1010
+ let decayed_offset_msat = offset_msat. checked_shr ( decays as u32 ) . unwrap_or ( 0 ) ;
1011
+ if half_decays % 2 == 0 {
1012
+ decayed_offset_msat
1013
+ } else {
1014
+ ( decayed_offset_msat >> 1 ) + ( decayed_offset_msat >> 2 )
1015
+ }
1020
1016
}
1021
1017
}
1022
1018
}
0 commit comments