diff --git a/src/mutagentools/flac/convert.py b/src/mutagentools/flac/convert.py
index 0ce867e..8b0438a 100644
--- a/src/mutagentools/flac/convert.py
+++ b/src/mutagentools/flac/convert.py
@@ -46,8 +46,8 @@ def convert_flac_to_id3(flac):
         result.append(convert_genre_to_tcon(tags.pop('genre'), tags.pop('style') if 'style' in tags.keys() else []))
 
     if 'discnumber' in tags.keys():
-        result.append(convert_disc_number_to_tpos(tags.pop('discnumber'),
-            tags.pop('totaldiscs') if 'totaldiscs' in tags.keys() else None))
+        result.append(convert_disc_number_to_tpos(first_of_list(tags.pop('discnumber')),
+            first_of_list(first(pop_keys(tags, 'totaldiscs', 'disctotal')))))
 
     if contains_any(tags.keys(), 'date', 'year'):
         result.append(convert_date_to_tdrc(first(pop_keys(tags, 'date', 'year'))))
@@ -67,7 +67,7 @@ def convert_flac_to_id3(flac):
 
     if 'tracknumber' in tags.keys():
         tracknumber = first_of_list(tags.pop('tracknumber'))
-        totaltracks = first_of_list(tags.pop('totaltracks')) if 'totaltracks' in tags.keys() else None
+        totaltracks = first_of_list(first(pop_keys(tags, 'totaltracks', 'tracktotal')))
 
         if PART_OF_SET.match(tracknumber):
             # it's a complicated dude

Disc Count isn't Being Copied Properly from EasyTAG FLACs to MP3s
**TL;DR** EasyTAG removes the `encoder` tag :unamused: and screws things up with the tags it uses.

Three bugs have been identified in `flac2id3`. two of which are fixable in this project:

 - Prevent EasyTag from removing the `encoder` tag.
 - [ ] Correctly bring in `tracktotal` into `TRCK` conversions.
 - [ ] Correctly bring in `disctotal` into `TPOS` conversions.
diff --git a/src/mutagentools/flac/tests.py b/src/mutagentools/flac/tests.py
index d57b6e9..7f42ec8 100644
--- a/src/mutagentools/flac/tests.py
+++ b/src/mutagentools/flac/tests.py
@@ -242,6 +242,62 @@ class FullConversionTestCase(unittest.TestCase):
         self.assertEqual(['Artist'], id3.get('TPE1'))
         self.assertEqual(2017, int(str(id3.get('TDRC').text[0])))
 
+    def test_convert_tracktotal(self):
+        """Tests that converting a track number and total number of tracks is accomplished."""
+        tags = {
+            'tracknumber': '1',
+            'totaltracks': '3',
+            'tracktotal': '5',
+        }
+
+        flac_mock = mock.MagicMock()
+        flac_mock.tags = tags
+
+        id3 = ID3()
+        list(map(lambda t: id3.add(t), convert_flac_to_id3(flac_mock)))
+        # make sure that no TXXX tags are created
+        self.assertEqual(0, len(list(
+            filter(lambda f: f.FrameID == 'TXXX', id3.values()
+        ))))
+
+    def test_convert_tracktotal_no_total(self):
+        """Tests that total track numbers are detected properly."""
+        # test that the track got populated singularly
+        flac_mock = mock.MagicMock()
+        flac_mock.tags = { 'tracknumber': '1' }
+
+        id3 = ID3()
+        list(map(lambda t: id3.add(t), convert_flac_to_id3(flac_mock)))
+        self.assertEqual('01', id3.get('TRCK'))
+
+    def test_convert_disctotal_no_total(self):
+        """Tests that total disc numbers something something."""
+        # test that the track got populated singularly
+        flac_mock = mock.MagicMock()
+        flac_mock.tags = { 'discnumber': '1' }
+
+        id3 = ID3()
+        list(map(lambda t: id3.add(t), convert_flac_to_id3(flac_mock)))
+        self.assertEqual('1', id3.get('TPOS'))
+
+    def test_convert_disctotal(self):
+        """Tests that total disc numbers something something."""
+        # test that the track got populated singularly
+        flac_mock = mock.MagicMock()
+        flac_mock.tags = {
+            'discnumber': '1',
+            'totaldiscs': '3',
+            'disctotal': '5',
+        }
+
+        id3 = ID3()
+        list(map(lambda t: id3.add(t), convert_flac_to_id3(flac_mock)))
+        self.assertEqual('1/3', id3.get('TPOS'))
+        # make sure that no TXXX tags are created
+        self.assertEqual(0, len(list(
+            filter(lambda f: f.FrameID == 'TXXX', id3.values()
+        ))))
+
 
 class IndividualConversionTestCase(unittest.TestCase):
 

pip install -e .[dev]
parse_log_pytest
requirements.txt
ipython mock pytest
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
asttokens==3.0.0
decorator==5.2.1
exceptiongroup==1.2.2
executing==2.2.0
iniconfig==2.1.0
ipython==8.18.1
jedi==0.19.2
matplotlib-inline==0.1.7
mock==5.2.0
mutagen==1.47.0
-e git+https://github.com/naftulikay/mutagen-tools.git@84a04ac4a422feefdb4e9e4dba82fbb7586b1148#egg=mutagentools
packaging==24.2
parso==0.8.4
pexpect==4.9.0
pluggy==1.5.0
prompt_toolkit==3.0.50
ptyprocess==0.7.0
pure_eval==0.2.3
Pygments==2.19.1
pytest==8.3.5
six==1.17.0
stack-data==0.6.3
tomli==2.2.1
traitlets==5.14.3
typing_extensions==4.13.0
wcwidth==0.2.13
zc.buildout==4.1.4

name: mutagen-tools
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - asttokens==3.0.0
      - decorator==5.2.1
      - exceptiongroup==1.2.2
      - executing==2.2.0
      - iniconfig==2.1.0
      - ipython==8.18.1
      - jedi==0.19.2
      - matplotlib-inline==0.1.7
      - mock==5.2.0
      - mutagen==1.47.0
      - packaging==24.2
      - parso==0.8.4
      - pexpect==4.9.0
      - pluggy==1.5.0
      - prompt-toolkit==3.0.50
      - ptyprocess==0.7.0
      - pure-eval==0.2.3
      - pygments==2.19.1
      - pytest==8.3.5
      - six==1.17.0
      - stack-data==0.6.3
      - tomli==2.2.1
      - traitlets==5.14.3
      - typing-extensions==4.13.0
      - wcwidth==0.2.13
      - zc-buildout==4.1.4
prefix: /opt/conda/envs/mutagen-tools

src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_disctotal src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_tracktotal
src/mutagentools/flac/tests.py::MainTestCase::test_to_json_dict src/mutagentools/flac/tests.py::MainTestCase::test_to_json_dict_flatten src/mutagentools/flac/tests.py::MainTestCase::test_to_json_dict_pictures src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_disctotal_no_total src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_flac_to_id3 src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_flac_to_id3_adds_tpos src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_flac_to_id3_duplicates src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_flac_to_id3_track src/mutagentools/flac/tests.py::FullConversionTestCase::test_convert_tracktotal_no_total src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_album_to_talb src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_albumartist_to_tpe2 src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_artist_to_tpe1 src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_composer_to_tcom src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_date_to_tdrc src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_disc_number_to_tpos src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_encoded_by_to_txxx src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_encoder_settings_to_txxx src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_encoder_to_txxx src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_generic_to_txxx src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_genre_to_tcon src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_length_to_tlen src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_mbid_to_ufid src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_organization_to_tpub src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_picture_to_apic src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_title_to_tit2 src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_toc_to_mcdi_bytes src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_toc_to_mcdi_str src/mutagentools/flac/tests.py::IndividualConversionTestCase::test_convert_tracknumber_to_trck
src/mutagentools/flac/convert.py
src/mutagentools/flac/convert.py