diff --git a/classes/@Rocket/Rocket.m b/classes/@Rocket/Rocket.m
index 7e39e879fb8a463b4548fcc69f138efdb8c08da4..b904ff43fb486dffea4585a0cfe4097d1b946563 100644
--- a/classes/@Rocket/Rocket.m
+++ b/classes/@Rocket/Rocket.m
@@ -153,12 +153,18 @@ classdef Rocket < Config
                     coeffName);
 
                 answer = '';
+                
                 if isempty(obj.coefficients.static) || isempty(obj.coefficientsHighAOA.static)
                     answer = questdlg(['Coefficient matrices not found. ' ...
                         'Do you want to create new matrices?']);
-                elseif options.checkGeometry && ~all(obj.checkGeometry())
-                    answer = questdlg(['Coefficient matrices differ from rocket geometry. ' ...
-                        'Do you want to create new matrices?']);
+                elseif options.checkGeometry
+                    [check, summary] = obj.checkGeometry();
+
+                    if ~all(check)
+                        disp(summary);
+                        answer = questdlg(['Coefficient matrices differ from rocket geometry. ' ...
+                            'Do you want to create new matrices?']);
+                    end
                 end
                 
                 switch answer
@@ -184,7 +190,7 @@ classdef Rocket < Config
 
     methods
         [coeffsValues, angle0] = interpCoeffs(obj, t, alpha, mach, beta, alt, c)
-        checks = checkGeometry(obj)
+        [checks, summary] = checkGeometry(obj)
         img = plot(obj)
     end
 
diff --git a/classes/@Rocket/checkGeometry.m b/classes/@Rocket/checkGeometry.m
index e61422f40605ed733434a8ef1bc5dbd9ff23c935..6608a6d88e94e0d213cf9eab3eb05862dea02cf6 100644
--- a/classes/@Rocket/checkGeometry.m
+++ b/classes/@Rocket/checkGeometry.m
@@ -1,11 +1,16 @@
-function checks = checkGeometry(obj)
+function [checks, summary] = checkGeometry(obj)
     % checkGeometry     - This methods checks if the rocket geometry
     %                     is consistent with the geometry of the
     %                     aerodynamic matrices
     %
     % OUTPUTS:
     %                   - checks (n fields of geometry, 1): boolean value of the geometry checks
-    
+
+    names = ["Initial xcg"; "Final xcg"; "Ogive type"; "Diameter"; "Nose Length"; 
+        "Nose p Mod"; "Nose c Mod"; "Center Length"; "Fins root chord"; 
+        "Fins free chord"; "Fins height"; "Fins XLE"; "Fins number"; 
+        "Boat Length"; "Boat final diameter"; "Boat type"];
+
     xCgRocket = round([ ...
         obj.xcg(1); ...
         obj.xcg(end) ...
@@ -15,69 +20,78 @@ function checks = checkGeometry(obj)
         obj.coefficients.geometry.xcg(1);
         obj.coefficients.geometry.xcg(end);
         ], 3);
+
+    noseTypeCheck = strcmp(obj.coefficients.geometry.ogType, obj.parafoil.noseType);
+
+    geometryRocket = round([
+        obj.diameter;
+        obj.parafoil.noseLength;
+        0; 0; % Placeholders for nose p and c mod
+        obj.lengthCenter;
+        obj.rear.finsRootChord;
+        obj.rear.finsFreeChord;
+        obj.rear.finsHeight;
+        obj.rear.finsDeltaXFreeChord;
+        obj.rear.nPanel;
+        obj.rear.boatLength;
+        obj.rear.boatFinalDiameter;
+        ], 3);
     
-    if (obj.parafoil.noseCMod & obj.parafoil.nosePMod) == 0 % KARMAN ogive case, no modified p and c coefficients
-        geometryRocket = round([
-            obj.diameter;
-            obj.parafoil.noseLength;
-            obj.lengthCenter;
-            obj.rear.finsRootChord;
-            obj.rear.finsFreeChord;
-            obj.rear.finsHeight;
-            obj.rear.finsDeltaXFreeChord;
-            obj.rear.nPanel;
-            obj.rear.boatLength;
-            obj.rear.boatFinalDiameter;
-            ], 3);
-        
-        geometryTest = round([
-            obj.coefficients.geometry.diameter;
-            obj.coefficients.geometry.lNose;
-            obj.coefficients.geometry.lCenter;
-            obj.coefficients.geometry.chord1;
-            obj.coefficients.geometry.chord2;
-            obj.coefficients.geometry.height;
-            obj.coefficients.geometry.deltaXLE;
-            obj.coefficients.geometry.nPanel;
-            obj.coefficients.geometry.boatL;
-            obj.coefficients.geometry.boatD;
-            ], 3);
-    else % MHAAK ogive case, modified p and c coefficients
-        geometryRocket = round([
-            obj.diameter;
-            obj.parafoil.noseLength;
-            obj.lengthCenter;
+    geometryTest = round([
+        obj.coefficients.geometry.diameter;
+        obj.coefficients.geometry.lNose;
+        0; 0; % Placeholders for nose p and c mod
+        obj.coefficients.geometry.lCenter;
+        obj.coefficients.geometry.chord1;
+        obj.coefficients.geometry.chord2;
+        obj.coefficients.geometry.height;
+        obj.coefficients.geometry.deltaXLE;
+        obj.coefficients.geometry.nPanel;
+        obj.coefficients.geometry.boatL;
+        obj.coefficients.geometry.boatD;
+        ], 3);
+
+    if (obj.parafoil.noseCMod && obj.parafoil.nosePMod)
+        geometryRocket([3, 4]) = round([            ...
             obj.parafoil.noseCMod;
-            obj.parafoil.nosePMod;
-            obj.rear.finsRootChord;
-            obj.rear.finsFreeChord;
-            obj.rear.finsHeight;
-            obj.rear.finsDeltaXFreeChord;
-            obj.rear.nPanel;
-            obj.rear.boatLength;
-            obj.rear.boatFinalDiameter;
-            ], 3);
-        
-        geometryTest = round([
-            obj.coefficients.geometry.diameter;
-            obj.coefficients.geometry.lNose;
-            obj.coefficients.geometry.lCenter;
-            obj.coefficients.geometry.cMod;
-            obj.coefficients.geometry.pMod;
-            obj.coefficients.geometry.chord1;
-            obj.coefficients.geometry.chord2;
-            obj.coefficients.geometry.height;
-            obj.coefficients.geometry.deltaXLE;
-            obj.coefficients.geometry.nPanel;
-            obj.coefficients.geometry.boatL;
-            obj.coefficients.geometry.boatD;
-            ], 3);
+            obj.parafoil.nosePMod;], 4);
+
+        geometryTest([3, 4]) = round([            ...
+            obj.parafoil.noseCMod;
+            obj.parafoil.nosePMod;], 4);
     end
-    
+
+    boatTypeCheck = strcmp(obj.coefficients.geometry.boatType, obj.rear.boatType);
+
     checks = [
-        xCgRocket == xCgTest;
-        strcmp(obj.coefficients.geometry.ogType, obj.parafoil.noseType);
+        ~obj.dynamicDerivatives | (xCgRocket == xCgTest);
+        noseTypeCheck;
         geometryRocket == geometryTest;
-        strcmp(obj.coefficients.geometry.boatType, obj.rear.boatType)
+        boatTypeCheck;
         ];
+
+    if nargout == 2
+        % Summarize data and leave placeholders 
+        ogiveType = ["CONE", "OGIVE", "POWER", "HAACK", "KARMAN", "MHAACK"];
+        boatType  = ["CONE", "OGIVE"];
+
+        % Convert text to DATCOM standard. !TODO: Si farebbe meglio con un
+        % enum
+        boatRocket = find(strcmp(obj.rear.boatType, boatType), 1, 'first') - 1;
+        boatTest = find(strcmp(obj.coefficients.geometry.boatType, boatType), 1, 'first') - 1;
+
+        ogRocket = find(strcmp(obj.parafoil.noseType, ogiveType), 1, 'first') - 1;
+        ogTest = find(strcmp(obj.coefficients.geometry.ogType, ogiveType), 1, 'first') - 1;
+
+        rocketData = [xCgRocket; ogRocket; geometryRocket; boatRocket];
+        testData = [xCgTest; ogTest; geometryTest; boatTest];
+        checkNames = names(~checks);
+
+        if isempty(checkNames)
+            summary = table;
+        else
+            summary = table(rocketData(~checks), testData(~checks), ...
+                'RowNames', checkNames, 'VariableNames', ["Rocket", "Coefficients"]);
+        end
+    end
 end
\ No newline at end of file