anchor.diff:                  fun _ _ targets ->
                       let targets =
                           Array.map (fun struct (targetLife, targetValue) ->
  -                            let progress = Life.getProgress time targetLife
  +                            let progress = Life.getProgress3 time range.RangeLife targetLife
                               let result = applyRange targetValue (value + scale (value2 - value, progress))
                               struct (targetLife, result))
                               targets
  
positive.code:                 fun _ _ targets ->
                      let targets =
                          Array.map (fun struct (targetLife, targetValue) ->
                              let progress = Life.getProgress time targetLife
                              let progressScaled = float progress * Math.PI * 0.5
                              let progressEaseOut = Math.Sin progressScaled
                              let result = applyRange targetValue (value + scale (value2 - value, single progressEaseOut))
  
negative.code:                 fun _ _ targets ->
                      let targets =
                          Array.map (fun struct (targetLife, targetValue) ->
                              let progress = Life.getProgress3 time range.RangeLife targetLife
                              let progressScaled = float progress * Math.PI * 0.5
                              let progressEaseIn = 1.0 + Math.Sin (progressScaled + Math.PI * 1.5)
                              let result = applyRange targetValue (value + scale (value2 - value, single progressEaseIn))
  