diff --git a/anbs_cp/CountFormatter.cs b/anbs_cp/CountFormatter.cs
index f6b608b..05bba3a 100644
--- a/anbs_cp/CountFormatter.cs
+++ b/anbs_cp/CountFormatter.cs
@@ -7,54 +7,28 @@
     {
         #region Cвойства класса
         /// 
-        /// Имена чисел ( , тысяч, миллионов, миллиардов и триллионов)
+        /// Имена чисел (тысяч, миллионов, миллиардов и т.п.)
         /// 
-        public string[] SizeNames { get; set; } = { "Байт", "Кб", "Мб", "Гб", "Тб" };
+        public string[] CountNames { get; set; } = { "", "тыс.", "млн.", "млрд." };
         /// 
         /// Знаков после запятой
         /// 
-        public byte DecimalPlaces { get; set; } = 2;
+        public byte DecimalPlaces { get; set; } = 1;
         /// 
-        /// Максимально байт (далее идут Кбайты)
+        /// Делители чисел
         /// 
-        public long ByteMax { get; set; } = 1024;
-        /// 
-        /// Максимально Кбайт (далее идут Мбайты)
-        /// 
-        public long KByteMax { get; set; } = 1048576;
-        /// 
-        /// Максимально Мбайт (далее идут Гбайты)
-        /// 
-        public long MByteMax { get; set; } = 1073741824;
-        /// 
-        /// Максимально Гбайт (далее идут Тбайты)
-        /// 
-        public long GByteMax { get; set; } = 1099511627776;
+        public long[] Delimeters { get; set; } = { 1000, 1000000, 1000000000 };
         #endregion
 
         #region Реализация интерфейса
         /// 
         /// Реализация интерфейса
         /// 
-        public string[] ValueNames { get => SizeNames; set => SizeNames = value; }
+        public string[] ValueNames { get => CountNames; set => CountNames = value; }
         /// 
         /// Реализация интерфейса
         /// 
-        public long[] MaxSizes
-        {
-            get => new long[] { ByteMax, KByteMax, MByteMax, GByteMax };
-            set
-            {
-                ByteMax = value[0];
-                KByteMax = value[1];
-                MByteMax = value[2];
-                GByteMax = value[3];
-            }
-        }
-        /// 
-        /// Реализация интерфейса
-        /// 
-        public string Format(long value) => (this as IValueFormatter).Format(value);
+        public long[] MaxSizes { get => Delimeters; set => Delimeters = value; }
         #endregion
     }
 }
\ No newline at end of file
diff --git a/anbs_cp/FileSizeFormatter.cs b/anbs_cp/FileSizeFormatter.cs
index e8e5537..a4cbd33 100644
--- a/anbs_cp/FileSizeFormatter.cs
+++ b/anbs_cp/FileSizeFormatter.cs
@@ -51,10 +51,6 @@
                 GByteMax = value[3];
             }
         }
-        /// 
-        /// Реализация интерфейса
-        /// 
-        public string Format(long value) => (this as IValueFormatter).Format(value);
         #endregion
     }
 }
\ No newline at end of file
diff --git a/anbs_cp/IValueFormatter.cs b/anbs_cp/IValueFormatter.cs
index 510d18e..36e0d3b 100644
--- a/anbs_cp/IValueFormatter.cs
+++ b/anbs_cp/IValueFormatter.cs
@@ -29,23 +29,29 @@
         /// Форматированная размерность (например, 20 Мб)
         public string Format(long value)
         {
-            //Bytes
-            if (value < MaxSizes[0])
-                return $"{value} {ValueNames[0]}";
-            //KiloBytes
-            if ((value >= MaxSizes[0]) && (value < MaxSizes[1]))
-                return $"{FrmtSize(value, MaxSizes[0])} {ValueNames[1]}";
-            //MegaBytes
-            if ((value >= MaxSizes[1]) && (value < MaxSizes[2]))
-                return $"{FrmtSize(value, MaxSizes[1])} {ValueNames[2]}";
-            //GigaBytes
-            if ((value >= MaxSizes[2]) && (value < MaxSizes[3]))
-                return $"{FrmtSize(value, MaxSizes[2])} {ValueNames[3]}";
-            //TeraBytes
-            if (value >= MaxSizes[3])
-                return $"{FrmtSize(value, MaxSizes[3])} {ValueNames[4]}";
-            //Не определён
-            return $"{value} {ValueNames[0]}";
+            //Левая граница
+            long leftnum;
+            //Правая граница
+            long rightnum;
+
+            for (int i = 0; i <= MaxSizes.Length; i++)
+            {
+                if (i == 0)
+                    leftnum = 0;
+                else
+                    leftnum = MaxSizes[i - 1];
+
+                if (i == MaxSizes.Length)
+                    rightnum = long.MaxValue;
+                else
+                    rightnum = MaxSizes[i];
+
+                if ((value >= leftnum) && (value < rightnum))
+                    return $"{FormatValue(value, leftnum)} {ValueNames[i]}";
+
+            }
+
+            return value.ToString();
         }
         /// 
         /// Деление числа на число с DecimalPlaces знаками после запятой
@@ -53,8 +59,13 @@
         /// Делимое число
         /// Число-делитель
         /// Частное (с DecimalPlaces знаками после запятой)
-        private string FrmtSize(long dividend, long divider)
+        private string FormatValue(long dividend, long divider)
         {
+            if (divider == 0)
+            {
+                return $"{dividend}";
+            }
+
             long delim = 1;
 
             for (int i = 0; i <= DecimalPlaces; i++)
diff --git a/anbs_cp/anbs_cp.csproj b/anbs_cp/anbs_cp.csproj
index bc9380c..8d583a6 100644
--- a/anbs_cp/anbs_cp.csproj
+++ b/anbs_cp/anbs_cp.csproj
@@ -29,4 +29,8 @@
     True
   
 
+  
+    
+  
+
 
diff --git a/anbsoftware.componentspack.sln b/anbsoftware.componentspack.sln
index 4570fac..adc732b 100644
--- a/anbsoftware.componentspack.sln
+++ b/anbsoftware.componentspack.sln
@@ -1,10 +1,15 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31424.327
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "anbs_cp", "anbs_cp\anbs_cp.csproj", "{442A56CC-1061-4EB5-8B67-3E3D997976D7}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "demo", "demo\demo.csproj", "{3BB0778D-3C34-4DD8-A54E-CB476BEF2F7B}"
+	ProjectSection(ProjectDependencies) = postProject
+		{442A56CC-1061-4EB5-8B67-3E3D997976D7} = {442A56CC-1061-4EB5-8B67-3E3D997976D7}
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -15,6 +20,9 @@ Global
 		{442A56CC-1061-4EB5-8B67-3E3D997976D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{442A56CC-1061-4EB5-8B67-3E3D997976D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{442A56CC-1061-4EB5-8B67-3E3D997976D7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3BB0778D-3C34-4DD8-A54E-CB476BEF2F7B}.Debug|Any CPU.ActiveCfg = Release|Any CPU
+		{3BB0778D-3C34-4DD8-A54E-CB476BEF2F7B}.Debug|Any CPU.Build.0 = Release|Any CPU
+		{3BB0778D-3C34-4DD8-A54E-CB476BEF2F7B}.Release|Any CPU.ActiveCfg = Debug.CNF|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/demo/CountValueTest.Designer.cs b/demo/CountValueTest.Designer.cs
new file mode 100644
index 0000000..6656a3b
--- /dev/null
+++ b/demo/CountValueTest.Designer.cs
@@ -0,0 +1,134 @@
+namespace demo
+{
+    partial class CountValueTest
+    {
+        /// 
+        ///  Required designer variable.
+        /// 
+        private System.ComponentModel.IContainer components = null;
+
+        /// 
+        ///  Clean up any resources being used.
+        /// 
+        /// true if managed resources should be disposed; otherwise, false.
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// 
+        ///  Required method for Designer support - do not modify
+        ///  the contents of this method with the code editor.
+        /// 
+        private void InitializeComponent()
+        {
+            this.InsertDataLabel = new System.Windows.Forms.Label();
+            this.InsertDataBox = new System.Windows.Forms.TextBox();
+            this.ResultLabel = new System.Windows.Forms.Label();
+            this.CalculateButton = new System.Windows.Forms.Button();
+            this.SelectFormatterLabel = new System.Windows.Forms.Label();
+            this.SelectFormatterBox = new System.Windows.Forms.ComboBox();
+            this.SuspendLayout();
+            // 
+            // InsertDataLabel
+            // 
+            this.InsertDataLabel.AutoSize = true;
+            this.InsertDataLabel.Location = new System.Drawing.Point(12, 66);
+            this.InsertDataLabel.Name = "InsertDataLabel";
+            this.InsertDataLabel.Size = new System.Drawing.Size(197, 17);
+            this.InsertDataLabel.TabIndex = 0;
+            this.InsertDataLabel.Text = "&Insert any int value:";
+            // 
+            // InsertDataBox
+            // 
+            this.InsertDataBox.Location = new System.Drawing.Point(12, 86);
+            this.InsertDataBox.Name = "InsertDataBox";
+            this.InsertDataBox.Size = new System.Drawing.Size(246, 24);
+            this.InsertDataBox.TabIndex = 1;
+            // 
+            // ResultLabel
+            // 
+            this.ResultLabel.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.ResultLabel.Location = new System.Drawing.Point(0, 143);
+            this.ResultLabel.Margin = new System.Windows.Forms.Padding(5);
+            this.ResultLabel.Name = "ResultLabel";
+            this.ResultLabel.Padding = new System.Windows.Forms.Padding(5);
+            this.ResultLabel.Size = new System.Drawing.Size(270, 79);
+            this.ResultLabel.TabIndex = 2;
+            this.ResultLabel.Text = "&Insert any int value to insert box above and press \"Calculate\" button to see res" +
+    "ult...";
+            this.ResultLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // CalculateButton
+            // 
+            this.CalculateButton.Location = new System.Drawing.Point(81, 116);
+            this.CalculateButton.Name = "CalculateButton";
+            this.CalculateButton.Size = new System.Drawing.Size(103, 23);
+            this.CalculateButton.TabIndex = 3;
+            this.CalculateButton.Text = "Calc&ulate";
+            this.CalculateButton.UseVisualStyleBackColor = true;
+            this.CalculateButton.Click += new System.EventHandler(this.CalculateButton_Click);
+            // 
+            // SelectFormatterLabel
+            // 
+            this.SelectFormatterLabel.AutoSize = true;
+            this.SelectFormatterLabel.Location = new System.Drawing.Point(12, 9);
+            this.SelectFormatterLabel.Name = "SelectFormatterLabel";
+            this.SelectFormatterLabel.Size = new System.Drawing.Size(161, 17);
+            this.SelectFormatterLabel.TabIndex = 4;
+            this.SelectFormatterLabel.Text = "&Select formatter:";
+            // 
+            // SelectFormatterBox
+            // 
+            this.SelectFormatterBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.SelectFormatterBox.FlatStyle = System.Windows.Forms.FlatStyle.System;
+            this.SelectFormatterBox.FormattingEnabled = true;
+            this.SelectFormatterBox.Items.AddRange(new object[] {
+            "CountFormatter",
+            "FileSizeFormatter"});
+            this.SelectFormatterBox.Location = new System.Drawing.Point(12, 29);
+            this.SelectFormatterBox.Name = "SelectFormatterBox";
+            this.SelectFormatterBox.Size = new System.Drawing.Size(246, 25);
+            this.SelectFormatterBox.TabIndex = 5;
+            // 
+            // CountValueTest
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 17F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(270, 222);
+            this.Controls.Add(this.SelectFormatterBox);
+            this.Controls.Add(this.SelectFormatterLabel);
+            this.Controls.Add(this.CalculateButton);
+            this.Controls.Add(this.ResultLabel);
+            this.Controls.Add(this.InsertDataBox);
+            this.Controls.Add(this.InsertDataLabel);
+            this.Font = new System.Drawing.Font("Courier New", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+            this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "CountValueTest";
+            this.ShowIcon = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "Formatter Test Unit";
+            this.Load += new System.EventHandler(this.CountValueTest_Load);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private Label InsertDataLabel;
+        private TextBox InsertDataBox;
+        private Label ResultLabel;
+        private Button CalculateButton;
+        private Label SelectFormatterLabel;
+        private ComboBox SelectFormatterBox;
+    }
+}
\ No newline at end of file
diff --git a/demo/CountValueTest.cs b/demo/CountValueTest.cs
new file mode 100644
index 0000000..defe9b7
--- /dev/null
+++ b/demo/CountValueTest.cs
@@ -0,0 +1,42 @@
+using anbs_cp;
+namespace demo
+{
+    public partial class CountValueTest : Form
+    {
+        public CountValueTest()
+        {
+            InitializeComponent();
+        }
+
+        private void CalculateButton_Click(object sender, EventArgs e)
+        {
+
+            if (string.IsNullOrEmpty(InsertDataBox.Text))
+                return;
+
+            IValueFormatter formatter;
+
+            long value = TypeConverter.StrToInt64(InsertDataBox.Text);
+
+            switch (SelectFormatterBox.SelectedIndex)
+            {
+                case 0:
+                    formatter = new CountFormatter();
+                    break;
+                case 1:
+                    formatter = new FileSizeFormatter();
+                    break;
+                default:
+                    formatter = new CountFormatter();
+                    break;
+            }
+
+            ResultLabel.Text = formatter.Format(value);
+        }
+
+        private void CountValueTest_Load(object sender, EventArgs e)
+        {
+            SelectFormatterBox.SelectedIndex = 0;
+        }
+    }
+}
\ No newline at end of file
diff --git a/demo/CountValueTest.resx b/demo/CountValueTest.resx
new file mode 100644
index 0000000..f298a7b
--- /dev/null
+++ b/demo/CountValueTest.resx
@@ -0,0 +1,60 @@
+
+  
+    
+    
+      
+        
+          
+            
+              
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+              
+            
+          
+          
+            
+              
+                
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+                
+              
+              
+            
+          
+        
+      
+    
+  
+  
+    text/microsoft-resx
+  
+  
+    2.0
+  
+  
+    System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+
\ No newline at end of file
diff --git a/demo/Program.cs b/demo/Program.cs
new file mode 100644
index 0000000..47c0157
--- /dev/null
+++ b/demo/Program.cs
@@ -0,0 +1,15 @@
+namespace demo
+{
+    internal static class Program
+    {
+        /// 
+        ///  The main entry point for the application.
+        /// 
+        [STAThread]
+        static void Main()
+        {
+            ApplicationConfiguration.Initialize();
+            Application.Run(new CountValueTest());
+        }
+    }
+}
\ No newline at end of file
diff --git a/demo/demo.csproj b/demo/demo.csproj
new file mode 100644
index 0000000..10977d6
--- /dev/null
+++ b/demo/demo.csproj
@@ -0,0 +1,16 @@
+
+
+  
+    WinExe
+    net6.0-windows
+    enable
+    true
+    enable
+    Release;Debug.CNF
+  
+
+  
+    
+  
+
+
\ No newline at end of file