*небольшая оптимизация и поправки вычислений