diff --git a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml
index 5139f31..a1c9735 100644
--- a/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml
+++ b/core/modules/taxonomy/migration_templates/d6_vocabulary_field.yml
@@ -8,7 +8,6 @@ source:
     entity_type: node
     type: entity_reference
     target_entity_type: taxonomy_term
-    cardinality: -1
 process:
   entity_type: 'constants/entity_type'
   type: 'constants/type'
@@ -21,7 +20,7 @@ process:
       plugin: skip_on_empty
       method: row
   'settings/target_type': 'constants/target_entity_type'
-  cardinality: 'constants/cardinality'
+  cardinality: cardinality
 destination:
   plugin: md_entity:field_storage_config
 migration_dependencies:
diff --git a/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php b/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php
index d2d3f19..f401b6a 100644
--- a/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php
+++ b/core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php
@@ -72,6 +72,7 @@ class Vocabulary extends DrupalSqlBase {
       ->execute()
       ->fetchCol();
     $row->setSourceProperty('node_types', $node_types);
+    $row->setSourceProperty('cardinality', ($row->getSourceProperty('tags') == 1 || $row->getSourceProperty('multiple') == 1) ? -1 : 1);
     return parent::prepareRow($row);
   }
 
