Index: src/ResolvExpr/CastCost.cpp
===================================================================
--- src/ResolvExpr/CastCost.cpp	(revision 4117761a350b196fe0274bfd19c566b08a3969bc)
+++ src/ResolvExpr/CastCost.cpp	(revision bc071901ad9345e63409b54d169b7000a53936df)
@@ -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;
 		}
 
