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 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))
  
positive.code:         | Set
  
      /// Describes range of behavior over a section of a target's life time.
      /// TODO: consider implementing range slicing with RangeBegin and RangeEnd.
      type [<StructuralEquality; NoComparison>] 'a Range =
          { RangeType : 'a RangeType
            RangeApplicator : RangeApplicator
            (*RangeBegin : single*)
            (*RangeEnd : single*) }
  
      /// The forces that may operate on a target.
      type [<StructuralEquality; NoComparison>] Force =
  
negative.code:                 fun _ _ targets ->
                      let targets =
                          Array.map (fun struct (targetLife, targetValue) ->
                              let progress = Life.getProgress3 time range.RangeLife targetLife
                              let rand = Rand.makeFromInt (int ((Math.Max (double progress, 0.000000001)) * double Int32.MaxValue))
                              let randValue = fst (Rand.nextSingle rand)
                              let result = applyRange targetValue (value + scale (value2 - value, randValue))
  