anchor.diff:      else
         let search = search |> TypeConverter.ToString
         value.IndexOf(search, StringComparison.Ordinal) |> double
  -      
  -  //----------------------------------------------------------------------------
  +
  +  // These steps are outlined in the ECMA-262, Section 15.5.4.13
     let internal slice (this:CO) (start:double) (end':BoxedValue) =
       let S = this |> TC.ToString
       let len = S.Length
       let intStart = start |> TC.ToInteger
       let intEnd = if end'.IsUndefined then len else end' |> TC.ToInteger
  -
       let from = if intStart < 0 then Math.Max(len + intStart, 0) else Math.Min(intStart, len)
       let to' = if intEnd < 0 then Math.Max(len + intEnd, 0) else Math.Min(intEnd, len)
  -
       let span = Math.Max(to' - from, 0)
  -
       S.Substring(from, span)
   
     //----------------------------------------------------------------------------
  
positive.code:       array.Put(uint32 i, parts.[i])
  
      array
          
    //----------------------------------------------------------------------------
    let internal substring (this:CommonObject) (start:double) (end':double) =
      let value = this |> TypeConverter.ToString
  
      let start = start |> TypeConverter.ToInt32
      let start = if start < 0 then Math.Max(start + value.Length, 0) else start
  
      let end' = end' |> TypeConverter.ToInt32
      let end' = Math.Max(Math.Min(end', value.Length-start), 0)
  
      if end' <= 0 then "" else value.Substring(start, end')
      
    //----------------------------------------------------------------------------
    let internal toLowerCase (this:CO) =
      let value = this |> TypeConverter.ToString
  
negative.code:     let split = Utils.createHostFunction env split
      proto.Put("split", split, DontEnum)
  
      let substring = new Func<CommonObject, double, BV, string>(substring)
      let substring = Utils.createHostFunction env substring
      proto.Put("substring", substring, DontEnum)
  
  