Index: src/ResolvExpr/CastCost.cpp
===================================================================
--- src/ResolvExpr/CastCost.cpp	(revision 5ccc7336506cd07739e57f3df639075f216ba4fb)
+++ src/ResolvExpr/CastCost.cpp	(revision 73d0e3f4e0ab67804cda0bdfa2660e3905620544)
@@ -53,14 +53,13 @@
 		void postvisit( const ast::EnumInstType * enumInst ) {
 			cost = conversionCost( enumInst, dst, srcIsLvalue, symtab, env );
-
-			if ( !enumInst->base->isCfa ) {
-				static ast::ptr<ast::BasicType> integer = { new ast::BasicType( ast::BasicKind::SignedInt ) };
-				Cost intCost = costCalc( integer, dst, srcIsLvalue, symtab, env );
-				cost = intCost < cost? intCost: cost;
-			} else if ( enumInst->base->isTyped() ) {
+			if ( enumInst->base->isTyped() ) {
 				auto baseConversionCost = 
 					castCost( enumInst->base->base, dst, srcIsLvalue, symtab, env );
 				cost = baseConversionCost < cost? baseConversionCost: cost;
 			}
+			static ast::ptr<ast::BasicType> integer = { new ast::BasicType( ast::BasicKind::SignedInt ) };
+			Cost intCost = costCalc( integer, dst, srcIsLvalue, symtab, env );
+			intCost.incSafe();
+			cost = intCost < cost? intCost: cost;
 		}
 
