title: Why does thinkscript throw these issues when I try to create a counter?
body: <p>When I try to create a counter and increment it in an if-else statement the thinkscript compiler throws confusing errors which tell me it's not allowed, yet I've seen this done in several examples.  They even have a reserved word: <code>rec</code> in order to allow for incrementing counters.</p>
  
  <p><code>score = score + 1;</code> produces: # Already assigned: Score at...</p>
  
  <p><code>rec score = score + 1;</code> produces:         # identifier already used: score at ...
          # not allowed inside an IF/THEN/ELSE statement</p>
  
  <pre><code>#
  # TD Ameritrade IP Company, Inc. (c) 2017-2019
  #
  
  input price = close;
  input length = 9;
  input displace = 0;
  
  def score = 0;
  
  
  def smavrgg = Average(price[-displace], length);
  def expMvAvrg = ExpAverage(price[-displace], length);
  
  plot SMA = smavrgg;
  SMA.SetDefaultColor(GetColor(1));
  
  plot AvgExp = expMvAvrg;
  AvgExp.SetDefaultColor(GetColor(1));
  
  
  # 1 if uptrend, 0 if downtrend
  def lastTrendisUp = (close[0] - close[1]) &gt; 0 ;
  def secondLastTrendisUP = (close[1] - close[2]) &gt; 0;
  def thirdLastTrendisUP = (close[2] - close[3]) &gt; 0;
  def fourthLastTrendisUP = (close[3] - close[4]) &gt; 0;
  
  
  input lookback = 5;
  
  # defines intBool (array) that indicates whether one or the other crossed. 
  
  def bull_cross = SMA crosses above AvgExp;
  def bear_cross = AvgExp crosses below SMA;
  
  # returns the highest value in the data array for the lookback.  
  # so [0, 1, 0, 0] means a cross happened within the last units. and 1 will be returned.  
  
  
  
  if (bull_cross[0] or bear_cross[0]) then {
      if lastTrendisUp {
          # Already assigned: Score at...
            score = score + 1;
  
  
          # identifier already used: score at ...
          # not allowed inside an IF/THEN/ELSE statement
            rec score = score + 1;
  
      } else {
  
      }
  } else if (bull_cross[1] or bear_cross[1])  {
      if secondLastTrendisUP {
  
      } else {
  
      }
  } else if (bull_cross[2] or bear_cross[2]) {
      if thirdLastTrendisUP {
  
      } else {
  
      }
  } else if (bull_cross[3] or bear_cross[3])  {
      if fourthLastTrendisUP {
  
      } else {
  
      }
  } else if (bull_cross[4] or bear_cross[4])  {
  
  } else {
  
  }
  
  # If most recent cross happened in the last 4
  # and most recent cross occured on a green candle.
  
  def bull_lookback = Highest(bull_cross, lookback);
  def bear_lookback = Highest(bear_cross, lookback);
  
  
  
  
  
  
  # def think = if bull_lookback or bear_lookback  
  
  plot signal = if bull_lookback then 2 else if bear_lookback then 1 else 0;
  signal.AssignValueColor(if signal == 2 then Color.DARK_GREEN else if signal == 1 then Color.DARK_RED else Color.DARK_ORANGE);
  AssignBackgroundColor(if signal == 2 then Color.DARK_GREEN else if signal == 1 then Color.DARK_RED else Color.DARK_ORANGE);
  </code></pre>