anchor.diff:  
           MessageInfo.BottomPosition := BottomPosition;
   
  +        if (MessageInfo.BottomPosition < 0) and (ActiveElementIndex <= 0) then
  +        begin
  +          // Не пускает первое сообщение за нижнюю границу окна
  +          ActiveElementIndex := 0;
  +          BottomPosition := 0;
  +          MessageInfo.BottomPosition := 0;
  +          FBottomMessageIndex := 0;
  +          FBottomMessagePosition := 0;
  +
  +          ItemListCount := 0;
  +
  +          // TODO: Возможна утечка памяти. MessageInfo
  +        end
  +        else
           // Отсечение элементов, которые полностью прячутся за нижнюю границу
           if (MessageInfo.BottomPosition + MessageInfo.MessageHeight < 0) and
             (FBottomMessageIndex = ActiveElementIndex) then
           begin
  -          //TODO: Проверка на перове сообщение
             BottomPosition := BottomPosition + MessageInfo.MessageHeight;
   
             ActiveElementIndex := ActiveElementIndex - 1;
             FBottomMessageIndex := FBottomMessageIndex - 1;
             FBottomMessagePosition := BottomPosition;
   
  -          ItemList[ItemListCount] := MessageInfo;
  -          Inc(ItemListCount);
  +          // TODO: Возможна утечка памяти. MessageInfo
             Continue;
           end;
   
  
positive.code:     ItemExist := False;
      for j := Low(ItemNew) to High(ItemNew) do
      begin
        if ItemOld[i] = ItemNew[j] then
        begin
          ItemExist := True;
          Break;
  
negative.code:               FBottomMessagePosition := FBottomMessagePosition - MessageInfo.MessageHeight;
                BottomPosition := FBottomMessagePosition;
  
                Continue;
              end;
            end;
  