anchor.diff:                  match fwdLen with
                   | OligoOver(_) -> // cut something off
                       if state.fb>dp.pp.minLength then  yield CHOP_F_AMP
  -                    if fwdTailLenFixed.IsNone && state.ft > fwdTailLenMin then yield CHOP_F_ANNEAL
  +                    // Put guard on this to stop best anneal data running away to zero kelvin ;(
  +                    if fwdTailLenFixed.IsNone && state.ft > fwdTailLenMin && state.bestAnnealDelta < maxAnnealSearchDeviation then 
  +                        yield CHOP_F_ANNEAL
                   | OligoMax(_) -> // could slide or cut
                       if state.bestFwdDelta < 0.0<C> && state.fb>dp.pp.minLength then yield CHOP_F_AMP
                       if fwdTailLenFixed.IsNone then
  -                        if  state.bestAnnealDelta < 0.0<C> && state.ft > fwdTailLenMin then yield CHOP_F_ANNEAL
  +                        if  state.bestAnnealDelta < 0.0<C> && state.ft > fwdTailLenMin then 
  +                            yield CHOP_F_ANNEAL
                           if state.fb < fwd.body.Length && state.ft > fwdTailLenMin then yield SLIDE_F_RIGHT
                           if state.rt > revTailLenMin && state.ft < fwdTailLenMax then
                               yield SLIDE_F_LEFT
  
positive.code: ﻿module PrimerCreation
  /// Support routines for primer design scenarios and primer generation for stitches
  open commonTypes
  open System
  
negative.code:     let X = rev.body.Length+middleDNA.Length-1
      /// First base of inline region
      let Y = rev.body.Length
      if verbose then
          printfn "tuneTailOpt: X=%d Y=%d\n template=%s" X Y fullTemplate.str
  
      /// Maximum amount by which we can stray from ideal annealing term during tune tails search
      let maxAnnealSearchDeviation = 10.0<C>
      /// Recursive optimization of the primer ends, adjusting lengths to get the amp / anneal and primer lengths optimized
      let rec tuneTailsOpt itersRemaining (state:TuneState) (seen':Set<TuneVector>) =
  
  