diff --git a/eeschema/lib_pin.cpp b/eeschema/lib_pin.cpp
index 253c79ddda..fd13d19fc3 100644
--- a/eeschema/lib_pin.cpp
+++ b/eeschema/lib_pin.cpp
@@ -1183,6 +1183,10 @@ void LIB_PIN::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITE
 
     aList.emplace_back( _( "Pos X" ), aFrame->MessageTextFromValue( pinpos.x, true ) );
     aList.emplace_back( _( "Pos Y" ), aFrame->MessageTextFromValue( pinpos.y, true ) );
+
+    #if 0   // For debug purpose only
+    aList.emplace_back( _( "Flags" ), wxString::Format( "%8.8X", (long)GetFlags() ) );
+    #endif
 }
 
 
diff --git a/eeschema/tools/symbol_editor_move_tool.cpp b/eeschema/tools/symbol_editor_move_tool.cpp
index b3cb0ceaa7..1784e7163a 100644
--- a/eeschema/tools/symbol_editor_move_tool.cpp
+++ b/eeschema/tools/symbol_editor_move_tool.cpp
@@ -317,8 +317,13 @@ int SYMBOL_EDITOR_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
 
                 try
                 {
-                    if( !pinTool->PlacePin( (LIB_PIN*) selection.Front() ) )
+                    LIB_PIN* curr_pin = (LIB_PIN*) selection.Front();
+                    // PlacePin() will clear the current selection, so we need to reset
+                    // flags of the selected pin here:
+                    if( !pinTool->PlacePin( curr_pin ) )
                         restore_state = true;
+                    else
+                        curr_pin->ClearEditFlags();
                 }
                 catch( const boost::bad_pointer& e )
                 {