diff --git a/mutalyzer/Db.py b/mutalyzer/Db.py
index 73c400467b58d51d68c4c159b6504f69c9919675..5bd25f3396680cd42ad2eeeb19f42ed23706bffe 100644
--- a/mutalyzer/Db.py
+++ b/mutalyzer/Db.py
@@ -275,7 +275,7 @@ class Mapping(Db) :
         return self.query(statement)
     #get_Transcripts
 
-    def get_TranscriptsByGeneName(self, geneName) :
+    def get_TranscriptsByGeneName(self, gene):
         """
             Get a list of transcripts, given a gene name.
 
@@ -288,21 +288,19 @@ class Mapping(Db) :
             Returns:
                 list ; A list of transcripts.
         """
-
         statement = """
-            SELECT transcript, version
+                SELECT  transcript,
+                        start, stop,
+                        cds_start, cds_stop,
+                        exon_starts, exon_stops,
+                        gene, chromosome,
+                        orientation, protein,
+                        version
                 FROM Mapping
                 WHERE gene = %s;
-        """, geneName
+        """, gene
 
-        ret = self.query(statement)
-        if ret :
-            l = []
-            for i in ret :
-                l.append(i[0] + '.' + str(i[1]))
-            return l
-        #if
-        return []
+        return self.query(statement)
     #get_TranscriptsByGeneName
 
     def get_GeneName(self, mrnaAcc) :
diff --git a/mutalyzer/mapping.py b/mutalyzer/mapping.py
index f3c55a250217df507465ff77af5478eeff83012c..3117f2b36906994282a71c1b4fd2e3df781bf8ed 100644
--- a/mutalyzer/mapping.py
+++ b/mutalyzer/mapping.py
@@ -511,12 +511,15 @@ class Converter(object) :
         return variant
     #correctChrVariant
 
-    def chrom2c(self, variant, rt) :
+    def chrom2c(self, variant, rt, gene=None):
         """
         @arg variant: a variant description
         @type variant: string
         @arg rt: the return type
         @type rt: string
+        @kwarg gene: Optional gene name. If given, return variant descriptions
+            on all transcripts for this gene.
+        @type gene: string
 
         @return: HGVS_notatations ;
         @rtype: dictionary or list
@@ -543,14 +546,20 @@ class Converter(object) :
             loc2 = int(self.parseTree.RawVar.EndLoc.PtLoc.Main)
         else :
             loc2 = loc
-        transcripts = self.__database.get_Transcripts(\
-                chrom, loc-5000, loc2+5000, 1)
+
+        if gene:
+            transcripts = self.__database.get_TranscriptsByGeneName(gene)
+        else:
+            transcripts = self.__database.get_Transcripts(chrom, loc-5000, loc2+5000, 1)
 
         HGVS_notatations = defaultdict(list)
         NM_list = []
         for transcript in transcripts :
             self._reset()
             self._FieldsFromValues(transcript)
+            if self.dbFields['chromosome'] != chrom:
+                # Could be the case if we got transcripts by gene name
+                continue
             M = self._coreMapping()
             if M is None :
                 #balen
diff --git a/mutalyzer/webservice.py b/mutalyzer/webservice.py
index 2feecd256ef36e4f5ba652eae8cc0192aa5b57a9..e969c04249cd6a823e57662a28edc77808a3ebe8 100644
--- a/mutalyzer/webservice.py
+++ b/mutalyzer/webservice.py
@@ -213,7 +213,13 @@ class MutalyzerService(DefinitionBase):
                      "Finished processing getTranscriptsByGene(%s %s)" % (
                      build, name))
 
-        return ret
+        if ret :
+            l = []
+            for i in ret :
+                l.append(i[0] + '.' + str(i[11]))
+            return l
+
+        return []
     #getTranscriptsByGene
 
     @soap(Mandatory.String, Mandatory.String, Mandatory.Integer,
@@ -481,17 +487,19 @@ class MutalyzerService(DefinitionBase):
         return result
     #chromosomeName
 
-    @soap(Mandatory.String, Mandatory.String, _returns = Array(Mandatory.String))
-    def numberConversion(self, build, variant) :
+    @soap(Mandatory.String, Mandatory.String, String, _returns = Array(Mandatory.String))
+    def numberConversion(self, build, variant, gene=None):
         """
         Converts I{c.} to I{g.} notation or vice versa
 
-
         @arg build: The human genome build (hg19 or hg18).
         @type build: string
         @arg variant: The variant in either I{c.} or I{g.} notation, full HGVS
-                      notation, including NM_ or NC_ accession number.
+            notation, including NM_ or NC_ accession number.
         @type variant: string
+        @kwarg gene: Optional gene name. If given, return variant descriptions
+            on all transcripts for this gene.
+        @type gene: string
 
         @return: The variant(s) in either I{g.} or I{c.} notation.
         @rtype: list
@@ -507,7 +515,7 @@ class MutalyzerService(DefinitionBase):
         if "c." in variant :
             result = [converter.c2chrom(variant)]
         elif "g." in variant :
-            result = converter.chrom2c(variant, "list")
+            result = converter.chrom2c(variant, "list", gene=gene)
         else:
             result = [""]
 
diff --git a/tests/test_webservice.py b/tests/test_webservice.py
index d470168056906ad52ddb6e0a72165a988d3c354f..5c7437843943c9473338402ce4db0825391a091c 100644
--- a/tests/test_webservice.py
+++ b/tests/test_webservice.py
@@ -116,6 +116,40 @@ class TestWebservice():
         assert_equal(type(r.string), list)
         assert 'NC_000001.10:g.159272155del' in r.string
 
+    def test_numberconversion_gtoc_gene(self):
+        """
+        Running numberConversion with valid g variant and a gene name should
+        give a list of c variant names on transcripts for the given gene.
+        """
+        r = self.client.service.numberConversion(build='hg19',
+                                                 variant='NC_000011.9:g.111959693G>T',
+                                                 gene='C11orf57')
+        assert_equal(type(r.string), list)
+        assert 'NM_001082969.1:c.*2178+d3819G>T' in r.string
+        assert 'NM_001082970.1:c.*2178+d3819G>T' in r.string
+        assert 'NM_018195.3:c.*2178+d3819G>T' in r.string
+
+    def test_numberconversion_gtoc_no_transcripts(self):
+        """
+        Running numberConversion with valid g variant but no transcripts
+        close to it should give an empty list.
+        """
+        r = self.client.service.numberConversion(build='hg19',
+                                                 variant='chr7:g.345T>C')
+        assert_false(r)
+
+    def test_numberconversion_gtoc_required_gene(self):
+        """
+        Running numberConversion with valid g variant but no transcripts
+        close to it, but with a gene name, should give a list of c variant
+        names on transcripts for the given gene.
+        """
+        r = self.client.service.numberConversion(build='hg19',
+                                                 variant='chr7:g.345T>C',
+                                                 gene='LOC100132858')
+        assert_equal(type(r.string), list)
+        assert 'XM_001715131.2:c.1155+d19483A>G' in r.string
+
     def test_gettranscriptsbygenename_valid(self):
         """
         Running getTranscriptsByGeneName with valid gene name should give a
@@ -133,6 +167,15 @@ class TestWebservice():
                   'NM_004022.2']:
             assert t in r.string
 
+    def test_gettranscriptsbygenename_invalid(self):
+        """
+        Running getTranscriptsByGeneName with invalid gene name should not
+        give a result.
+        """
+        r = self.client.service.getTranscriptsByGeneName(build='hg19',
+                                                         name='BOGUSGENE')
+        assert_false(r)
+
     def test_gettranscriptsandinfo_valid(self):
         """
         Running getTranscriptsAndInfo with a valid genomic reference should
@@ -206,7 +249,7 @@ class TestWebservice():
 
     def test_gettranscripts(self):
         """
-        Running getTranscriptsByGeneName should give a list of transcripts.
+        Running getTranscripts should give a list of transcripts.
         """
         r = self.client.service.getTranscripts(build='hg19', chrom='chrX',
                                                pos=32237295)
@@ -222,7 +265,7 @@ class TestWebservice():
 
     def test_gettranscripts_with_versions(self):
         """
-        Running getTranscriptsByGeneName with versions=True should give a list
+        Running getTranscripts with versions=True should give a list
         of transcripts with version numbers.
         """
         r = self.client.service.getTranscripts(build='hg19', chrom='chrX',