anchor.diff:                      let midOverlapContribution = (hd.dna.Length * 2 - minInlineOverlap)/2 |> max 0
                       let fwdMiddleLen = (min lenSF maxSandwichLength)+midOverlapContribution
                       let revMiddleLen = (min lenSR maxSandwichLength)+midOverlapContribution
  -                    if hd.dna.Length = 0 then
  +                    if hd.dna.Length = 0 then 
                           (None,
                            0,
                            Microsoft.FSharp.Core.int.MaxValue,
  
positive.code:                          revTailLenMin,
                           revTailLenMax)
                      else
                          let linkerTm = temp dp.pp hd.dna.arr hd.dna.Length
                          (None,
                           ((0.8 * float fwdMiddleLen)|>round),
                           Microsoft.FSharp.Core.int.MaxValue,
                           Some(linkerTm),
                           None,
                           ((0.8 * float revMiddleLen)|>int),
                           Microsoft.FSharp.Core.int.MaxValue)
  
negative.code:     let fullTemplate = DnaOps.concat [ rev.body.RevComp() ; middleDNA ; fwd.body ]
  
      /// Target Tm for middle annealing part.  Cheat if it's a linker and we just want to keep this part (ideally) full length
      let annealTarget = 
              match firmMiddle with 
              | Some(x) -> 
                      if verbose then printfn "setAnnealTarget to firmMiddle=%A" x
                      x 
              | None -> 
                      if verbose then printfn "setAnnealTarget to seamlessOverlapTm=%A" dp.seamlessOverlapTm
                      dp.seamlessOverlapTm
      //let annealTarget = dp.seamlessOverlapTm // Just use this,  rev/fwdTailLenFixed vars take care of constraining RYSE linkers
  
      // Find two positions f and r that create a better ovelap tm
  